我正在开发一个简单的C程序,其中有两个源文件:server.c和client.c
我使用套接字正确连接了所有内容,并使用poll()函数轮询键盘以获取数据(以及连接到管道的shell)。
我能够检测客户端何时使用^ D和^ C命令知道杀死子进程,并退出客户端和服务器终端。
但是,有没有办法检测客户端是否挂机(即我在客户端终端选项卡上明确单击x)?因为现在,服务器选项卡没有检测到这一点,也没有关闭。我想避免使用超时
答案 0 :(得分:0)
您可以使用recv()
sys调用不断探测客户端套接字。它被设计为在客户端断开连接时返回0.
while (1) {
//Get request from client, leave if client quits
if (recv(client_socket, client_request, sizeof(client_request), 0) == 0) {
break;
}
}
OR
// This while condition will fail when recv returns 0, because C
while (recv(client_socket, client_request, sizeof(client_request), 0)) {
// insert code here
}
希望这有帮助