tcp链接断开的探测

有资料说,read、write都可以探测tcp的断开,但都不是实时的。

但是实际在某些设备上测试发现,即使开一个线程每隔一小段时间发一次心跳包(write),write可能总是成功的,write也不能探测连接已经断开,而且这个状态持续很久。

所以,如果需要保持和设备的连接,心跳包需要回复,如果两秒内无回复,应该立即断开,重新连接。这样才能及时关闭实际上已经断开的链接,保证服务端可以发信息到设备。

一般来说,只需要设备向服务器发送心跳包,服务器回复即可,不需要服务器来发送心跳。

另外,服务器离设备越近越好,部署多点还是很有意义的,特别是在跨国情况下,断开很频繁。

原文地址:https://www.cnblogs.com/dearplain/p/7821295.html