gpt4 book ai didi

轮询 : How to detect if client hangs up 的 C 套接字编程

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:50 25 4
gpt4 key购买 nike

我正在开发一个简单的 C 程序,其中有两个源文件:server.c 和 client.c

我用套接字正确连接了所有东西,并使用 poll() 函数轮询键盘数据(以及连接到管道的外壳)。

我能够检测到客户端何时使用 ^D 和 ^C 命令知道要终止子进程,并退出客户端和服务器终端。

但是,有没有办法检测客户端是否挂断(即我在客户端选项卡上明确单击 x)?因为现在,服务器选项卡没有检测到这一点,也没有关闭。我想避免使用超时

最佳答案

您可以使用 recv() 系统调用连续探测客户端套接字。它旨在在客户端断开连接时返回 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
}

希望对您有所帮助🤓

关于轮询 : How to detect if client hangs up 的 C 套接字编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43578110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com