我们有一台服务器,它可以接受的传入连接数量有限。 由于各种不同的原因,我们有多个客户端以不同的时间间隔连接到服务器。
服务器的至少一个功能要求它处理客户端的请求并在同一个套接字上回复。然而:
- 客户端提示超时(我相信关闭套接字)
- 服务器成功完成处理,但线程抛出一个 SIGCHLD,因为套接字已关闭。
我有类似于下面的代码,用于检查套接字描述符。
if (connect_desc > 0)
{
if (write(connect_desc, buffer, sizeof(buffer)) < 0)
{
printf("write error\n");
}
}
else
printf("connect_desc < 0\n");
我的问题是:
如果套接字被客户端关闭,套接字描述符在服务器上的值会改变吗?如果没有,有没有办法在我的代码中捕获它?
我没有看到最后打印出来的。
最佳答案
Q: Will the descriptor change?
答:没有
Q: How can I check the status of my connection?
答:一种方法是简单地尝试写入套接字,然后检查错误状态。
强烈建议:
关于c - 如果客户端关闭连接,套接字描述符会改变吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19552403/