tcp链接断开的探测

 

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

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

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

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

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

 

posted on 2017-11-12 11:51  dearplain  阅读(283)  评论(0编辑  收藏  举报