TCP通信 检测网络已经断了

slect send函数判断网络已经断了。
SEND函数的成功返回只能表示发送数据已经进入了SOCKET内核的发送队列,但是不一定就已经在线上或者已经被成功接收了。由于TCP/ip协议本身并不提供对网络物理链路突然断开的实时通知机制,即使用了SETSOCKOPT的KEEPALIVE选项也只能在断开发生两小时15分10秒以后SOCKET层才能得到一个错误通知。
在使用TCP/IP通信时,要能立刻得到网络连接突然中断的方法有两种:

1。使用一个单独的线程或者进程定时发送特定数据给对方,如果对方在给定的时间没有回应数据,就表明通信链路产生了问题,也

就是所谓的心跳检测。

2。修改注册表参数,将KEEPALIVE的默认时间间隔变短,在WIN2000里面有专门修改TCP注册表参数的函数。

 

posted @ 2010-09-06 16:33  deepwishly  阅读(422)  评论(0编辑  收藏  举报