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