【发布时间】:2012-12-23 00:22:24
【问题描述】:
我有一个 C++ 网络应用程序,它接受来自客户端的 TCP 连接,然后在套接字上等待,直到客户端决定发送数据(有时它们很长时间都不会发送任何东西,这没关系)。
它主要在客户端崩溃或机器关闭时检测错误情况,但是当连接到客户端的网络电缆被拔下时需要几分钟才能注意到,我希望它尽快注意到这种情况。
我无法控制客户端,也无法让他们发送类似“ping”的信息。我的服务器确实向客户端发送了一个“ping”数据包(但它们不会发送响应),但即使拔下电缆,write() 也会返回正确的字节数(我看到 TCP 堆栈发送重试Wireshark 中的数据包)。
发现连接丢失的最佳方法是什么?如果我可以在 write() 调用中检测到它,那将是最方便的。
我需要它在 Windows 和 Linux 上工作。
【问题讨论】:
标签: c++ sockets tcp network-programming