牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

心跳包

一般是用来判断对方(设备,进程或其它网元)是否正常动行,一般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉。用于检测TCP的异常断开。

一般是用来判断对方(设备,进程或其它网元)是否正常动行,一般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉。用于检测TCP的异常断开。


基本原因是服务器端不能有效的判断客户端是否在线也就是说,服务器无法区分客户端是长时间在空闲,还是已经掉线的情况.所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。

代码就是每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息
如果服务端几分钟内没有收到客户端信息则视客户端断开。比如有些通信软件长时间不使用,要想知道它的状态是在线还是离线就需要心跳包,定时发包收包。

发包方:可以是客户也可以是服务端,看哪边实现方便合理。一般是客户端。服务器也可以定时轮询发心跳下去。

一般来说,出于效率的考虑,是由客户端主动向服务器端发包,而不是相反。

posted on 2006-07-07 11:45 杨粼波 阅读(3314) 评论(3)  编辑 收藏 引用 所属分类: 网络编程

评论

# re: 心跳包[未登录] 2007-12-25 21:13 南郁

TCP心跳包一般不是用户自己做,而是透明的,由TCP这一层自己做。一边是建立TCP Connection时的一个option.  回复  更多评论   

# re: 心跳包 2009-08-12 16:23 xuxiangwin@126.com

当Tcp连接长时间空闲时,系统会认为本次连接已经死了,设置状态CLOSE_WAIT,系统会自动清理掉这些死连接。

所以TCP的连接还需要一种心跳包的模拟来保证客户的可靠性。
  回复  更多评论   

# re: 心跳包 2010-07-30 04:20 anonimouse

tcp连接断开会有消息的响应的  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理