有帮助
我正在处理一个简单的C程序,其中有两个源文件:server.c and Client.c
我与插座正确连接了所有内容,然后我使用poll((函数来轮询数据的键盘(以及连接到管道的外壳(。
我能够检测客户端何时使用 ^d and ^c命令来知道杀死子进程,并退出客户端和服务器终端。
但是,有没有办法检测客户端是否挂起(即我在"客户端终端"选项卡上明确单击x(?因为现在,"服务器"选项卡没有检测到这一点,也不会关闭。我想避免使用超时
您可以使用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;
}
}
或
// This while condition will fail when recv returns 0, because C
while (recv(client_socket, client_request, sizeof(client_request), 0)) {
// insert code here
}
希望这对🤓