socket编程,如何及时检测出对方连接已经异常断开?
网络连接的另外一方,如果因为异常或者断电等原因,导致连接断开,本方一般无法及时发现,往往在本方再一次向对方发包的时候才报错说连接断开。那么,有哪些方法可以保证及时发现对方异常断开连接呢?
目前听说的方法是心跳检测,即,每隔一段时间收发一个心跳包和ACK,无形中增加了网络包的数量,还有更好的方法么
silber
12 years, 10 months ago
Answers
可以采用tcp 的keeplive机制,不过它的原理也是采用了心跳包的方法,但是开销真的不大。keeplive详细的用法可以参考这里 http://www.tldp.org/HOWTO/html_single...
recv方法貌似不能检测断电和拔网线这类的断开情况
漠漠ぜ清寒
answered 12 years, 10 months ago