【问题标题】:Connection loss detection with poll()使用 poll() 检测连接丢失
【发布时间】:2016-09-04 07:09:25
【问题描述】:

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

【问题讨论】:

    标签: c tcp client-server polling


    【解决方案1】:

    当使用多路复用 io 和 poll 时,您可以通过以下事件处理连接关闭:

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

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

    • POLLERR 其他错误。

    当这三个事件被触发时,说明客户端已经关闭了连接或者socket有错误,你通常关闭socket。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 2011-06-13
      • 1970-01-01
      • 1970-01-01
      • 2018-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多