我正在制作客户端服务器应用程序。以前在应用程序中,如果客户端关闭,服务器将尝试重新连接(即,如果服务器端的recv()
返回0值,则服务器将返回接受连接)。现在我想通过允许它连接到多个客户端来修改服务器。我想过使用poll()
,所以服务器可以在某个时间检查每个客户端。我想知道poll
如何检查与客户端的连接是否丢失?
答案 0 :(得分:0)
当使用带有poll
的Multiplex时,您可以使用以下事件处理连接关闭:
POLLIN
当有要读取的数据时,以及执行read
或recv
函数调用时,请确保检查了返回值,通常是返回值0
表示连接已关闭。这与您之前的单个客户端版本相同。
POLLRDHUP
表示对等方已关闭连接,或关闭写入连接的一半。
POLLERR
了解其他错误。
当触发三个事件时,表示客户端已关闭连接或套接字上有错误,通常会关闭套接字。