使用poll()检测连接丢失

时间:2016-05-09 15:12:49

标签: c tcp client-server polling

我正在制作客户端服务器应用程序。以前在应用程序中,如果客户端关闭,服务器将尝试重新连接(即,如果服务器端的recv()返回0值,则服务器将返回接受连接)。现在我想通过允许它连接到多个客户端来修改服务器。我想过使用poll(),所以服务器可以在某个时间检查每个客户端。我想知道poll如何检查与客户端的连接是否丢失?

1 个答案:

答案 0 :(得分:0)

当使用带有poll的Multiplex时,您可以使用以下事件处理连接关闭:

  • POLLIN当有要读取的数据时,以及执行readrecv函数调用时,请确保检查了返回值,通常是返回值0表示连接已关闭。这与您之前的单个客户端版本相同。

  • POLLRDHUP表示对等方已关闭连接,或关闭写入连接的一半。

  • POLLERR了解其他错误。

当触发三个事件时,表示客户端已关闭连接或套接字上有错误,通常会关闭套接字。