|
文件: |
keepalive.rar |
大小: |
2KB |
下载: |
下载 | |
keep alive 程序
写两个c/s结构程序,client与server的连接建立起来之后,双方不发送任何数据,server端sleep,client端处于阻塞式recv,会发现在设置了keep alive时,在间隔的时间内,确实有keep alive的探测包往来。拔网线, client端可以迅速的知道,返回错误码为ETIMEOUT。抓包工具为tcpdump和wireshark,在ubuntu上,windows XP下测试结果相同。
如果有数据发送,将没有探测包往来。即使拔掉网线,send的一方也不会察觉到,因为它认为连接上是有数据的。所以在应用层如果设置了心跳,keep alive将失效。另外,拔网线时,linux下的send直到socket buffer满,即无法塞数据时,才返回EAGAIN错误,无法和真正的网络忙区分开。
压缩包内为测试程序源文件。
阅读(959) | 评论(0) | 转发(0) |