当前位置: 首页 > 工具软件 > Spice-GTK > 使用案例 >

spice-gtk如何实现断网提醒

濮阳奇逸
2023-12-01

spice-gtk现状

使用过spice-gtk进行远程连接虚拟机的朋友应该都知道,正在连接虚拟机的过程中,如果网络断开,虚拟机窗口界面就会卡死,也不会给出任何提示信息,那么下面我们来实现spice-gtk网络超时后自动退出。

设置socket超时关闭选项

首先找到spice-channel.c这个是spice-gtk的核心网络层,找到setsockopt函数所在位置加入:

    int keepAlive = 1; // 设定 KeepAlive

    int keepIdle = 3; // 开始首次 KeepAlive 探测前的 TCP 空闭时间

    int keepInterval = 3; // 两次 KeepAlive 探测间的时间间隔

    int keepCount = 1; // 判定断开前的 KeepAlive 探测次数

    setsockopt(g_socket_get_fd(c->sock), SOL_SOCKET, SO_KEEPALIVE, (void*)&keepAlive, sizeof(keepAlive));
    setsockopt(g_socket_get_fd(c->sock), SOL_TCP, TCP_KEEPIDLE, (void *)&keepIdle, sizeof(keepIdle));
    setsockopt(g_socket_get_fd(c->sock), SOL_TCP, TCP_KEEPINTVL, (void *)&keepInterval, sizeof(keepInterval));
    setsockopt(g_socket_get_fd(c->sock), SOL_TCP, TCP_KEEPCNT, (void *)&keepCount, sizeof(keepCou

 类似资料: