【问题标题】:UNIX C BSD Sockets TCP_KEEPALIVE how to check if socket is marked as brokenUNIX C BSD 套接字 TCP_KEEPALIVE 如何检查套接字是否被标记为损坏
【发布时间】:2011-04-12 19:58:56
【问题描述】:

我一直在尝试为 C 服务器套接字实现 TCP_KEEPALIVE 参数,但我似乎无法弄清楚如何检查套接字是否被标记为损坏。我按照本教程配置套接字以保持活动状态,但它说“如果连续九次没有收到 ACK 响应,则连接被标记为断开”。我的问题是,我怎么知道套接字被标记为损坏?

教程:http://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/

【问题讨论】:

    标签: c sockets keep-alive socketserver


    【解决方案1】:

    从套接字读取()。

    如果套接字已损坏,read 将返回 -1。

    【讨论】:

    • 另外,recv 的返回值 0 表示正常关机。
    【解决方案2】:

    如果内核决定连接断开,当您尝试发送到套接字或从套接字接收时会出现错误。您应该已经对发送和接收进行了适当的错误处理,以处理对等方自发终止连接的“正常”情况。因此,不需要“额外”的错误处理代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      相关资源
      最近更新 更多