在linux中使用非阻塞(20毫秒周期)TCP连接时,我遇到了一个问题:
当我从服务器端关闭套接字[close(sd)或shutdown(sd,2);close(sd)]时,client poll()不接收POLLHUP事件。
从shell终止服务器时,将收到POLLHUP。
我如何在一两个周期内通知客户?
最佳答案
TCP断开连接将使用POLLIN发出信号,如果正常关机,read()将返回0,或者-1和适当的错误(errno是EINTR/ewooldblock以外的任何内容)。
有些平台可能会用POLLHUP发出信号,所以您可能也希望处理这个案例。