【发布时间】:2011-04-12 19:58:56
【问题描述】:
我一直在尝试为 C 服务器套接字实现 TCP_KEEPALIVE 参数,但我似乎无法弄清楚如何检查套接字是否被标记为损坏。我按照本教程配置套接字以保持活动状态,但它说“如果连续九次没有收到 ACK 响应,则连接被标记为断开”。我的问题是,我怎么知道套接字被标记为损坏?
【问题讨论】:
标签: c sockets keep-alive socketserver
我一直在尝试为 C 服务器套接字实现 TCP_KEEPALIVE 参数,但我似乎无法弄清楚如何检查套接字是否被标记为损坏。我按照本教程配置套接字以保持活动状态,但它说“如果连续九次没有收到 ACK 响应,则连接被标记为断开”。我的问题是,我怎么知道套接字被标记为损坏?
【问题讨论】:
标签: c sockets keep-alive socketserver
从套接字读取()。
如果套接字已损坏,read 将返回 -1。
【讨论】:
recv 的返回值 0 表示正常关机。
如果内核决定连接断开,当您尝试发送到套接字或从套接字接收时会出现错误。您应该已经对发送和接收进行了适当的错误处理,以处理对等方自发终止连接的“正常”情况。因此,不需要“额外”的错误处理代码。
【讨论】: