QQ的心跳机制是这样的?

liujinxing 2008-10-29 10:33:14
最近发现QQ在状态检测上很灵敏,adsl断线了立马就能检测出来
相比同类的其他软件,如skype之流,则要过一段时间才能提示断线;
再者,当adsl恢复,qq立马也能检测出来,开始登陆。

请问这样的机制是怎么实现的呢?通过心跳包?不太可能啊,如果过一固定的时间发心跳,应该比较久才能检测失败才对;
再说,adsl恢复也不可能实现触发心跳的啊?
抓包看了qq发的icq协议也没有固定间隔的包出现!

疑问,这样的机制很先进的嘛,不知道怎么实现的?
...全文
1527 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzhenhang 2010-10-28
  • 打赏
  • 举报
回复
我估计还是有对本地网络的检测,如果断线来自于本地连接的话,QQ反映特别快
QiqiStudio 2010-09-14
  • 打赏
  • 举报
回复
这东西 是用心跳包但不全是心跳包 有协议检测的
liunx1987 2010-05-28
  • 打赏
  • 举报
回复
谢谢高人了!
daqife 2010-04-26
  • 打赏
  • 举报
回复
正要研究QQ的心跳机制呢,在无线移动通信中对CCCH信道带来的负荷情况,就看到这个,7楼高人,先谢过!
daqife 2010-04-26
  • 打赏
  • 举报
回复
没看到啊!
lvjian2000 2009-07-17
  • 打赏
  • 举报
回复
呵呵,学习了~
zishen_daodao 2009-06-24
  • 打赏
  • 举报
回复
学习了
hanjoe109 2008-11-19
  • 打赏
  • 举报
回复
學習了
山书生 2008-11-10
  • 打赏
  • 举报
回复
o..楼上的,那就是怎么样呀?给点提示说辞啦
homesos 2008-11-10
  • 打赏
  • 举报
回复
速度没有LZ所说的那么快,与服务器断开连接后QQ就迅速下线了(没有这么快,可以接个HUB或交换机上拔掉与服务器的网线试试)。

1.QQ与服务器的连接状态通过心跳机制来实现,每隔一段时间(10s)发一个HELLO包,包内容示例如下:
0000 ff ff ff ff ff ff 00 11 43 e7 a6 66 08 00 45 00 ........ C..f..E.
0010 00 2a 11 05 00 00 80 11 69 15 c0 a8 00 01 ff ff .*...... i.......
0020 ff ff 1d e6 1d e6 00 16 44 9f 48 65 6c 6c 6f 2c ........ D.Hello,
0030 20 34 20 2d 2d 2d 2d 21 00 00 00 00 4 ----! ....
先用TCPVIEW查看QQ的连接端口,可能有28个左右,然后用Ethereal抓取一下相关的网络包就知道了。

2.再连接时的速度要快一些,不是通过心跳包实现的,断线后QQ不再发送上面的心跳包,在连接后才恢复发送心跳包,可能是通过获取系统TCPIP状态来实现的,可以用Procmon看一下QQ的操作。
loucc 2008-10-31
  • 打赏
  • 举报
回复
呵呵,你用过网管软件就知道了
pushware 2008-10-31
  • 打赏
  • 举报
回复
是不是直接由设备驱动触发的呢?
alwaysrun 2008-10-31
  • 打赏
  • 举报
回复
没人回答?
josemourinho 2008-10-30
  • 打赏
  • 举报
回复
同问
josemourinho 2008-10-30
  • 打赏
  • 举报
回复
同问

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧