如何通知tcp客户端服务器关机

时间:2012-03-14 11:05:35

标签: c linux sockets

在linux中使用非阻塞(20毫秒循环)TCP连接,我遇到了一个问题:

  • 当我从服务器端关闭套接字[close(sd)或shutdown(sd,2); close(sd)]时,客户端poll()不接收POLLHUP事件。

  • 当服务器从shell中被杀死时,收到POLLHUP。

如何在一两个周期内通知客户?

1 个答案:

答案 0 :(得分:3)

使用POLLIN发出TCP断开信号,并且在正常关闭的情况下read()将返回0,或者-1和适当的错误(errno不是EINTR / EWOULDBLOCK)。

有些平台可能会通过POLLHUP发出信号,因此您可能也想处理这种情况。