我正在 Linux 架构中进行编码。 我对套接字服务器和客户端有疑问。 我制作了一个示例代码,其中服务器继续接受连接并且客户端连接到服务器。 如果有人以某种方式拔掉了网络电缆,那么我正在断开客户端(客户端套接字与 PC 断开连接),而在服务器端连接仍然存在,因为我无法通知客户端已断开连接,因为网络已拔掉。
我怎么知道客户端断开连接了?
谢谢, 尼尔
最佳答案
要么需要在socket上配置keepalive,要么发送应用层的心跳消息,否则监听端会无限期的等待数据包的到来。如果您控制协议(protocol),应用程序级别的心跳可能会更容易。作为有利的一面,这两种解决方案都有助于保持网络中 NAT 网关之间的连接。
查看此答案:Is TCP Keepalive the only mechanism to determine a broken link?
另请参阅此 Linux 文档:http://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/#programming
关于linux - 如何知道 Socket 客户端断开连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4956940/