项目中需要对网络连接的有效性进行监测,在断开的时候及时的重连或其他处理。以前的处理方式是,应用层发送心跳包,如果一段时间内没有响应,判断为网络故障。后来,随着对tcp/ip的了解的深入,接触到了tcp/ip自带的保活机制,禁不住大喜,原来可以用系统自带的保活机制啊,根本不用应用层来自己监测的。新项目使用tcp/ip的保活机制来检测网络故障。在使用中,偶尔会发现,明明已经断开连接了,保活机制并没有检测到网络故障。真是百思不得其解,难道保活机制不能使用了么?经过深入的研究这个问题,发现了规律.保活机制根据发送缓冲区里面是否有数据来判断网络链接是否存在。拔掉网线之后,用netstat -tan 发现发送缓冲区有时候会存在数据,保活机制就任务网络存在。用到系统保活机制的同志们要注意了。(测试平台为linux3.15, 三星的4412核心版)。
关于linux平台下TCP/IP的保活机制小议
最新推荐文章于 2024-09-04 20:16:51 发布