免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6501 | 回复: 4
打印 上一主题 下一主题

如何判断客户端是否断开连接 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-14 20:44 |只看该作者 |倒序浏览
如何知道客户端是否断开连接,
比如QQ怎么知道对方已经离开,难道还要去服务器查?
再针对UDP来说,udp是无连接的,怎么判断连接是否断开

论坛徽章:
0
2 [报告]
发表于 2004-04-14 20:48 |只看该作者

如何判断客户端是否断开连接

我也想知道,顶!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2004-04-14 21:41 |只看该作者

如何判断客户端是否断开连接

应该是去服务器查的。
比如你qq下线,然后向服务器发一个下线的
消息,然后记录你的状态。

论坛徽章:
0
4 [报告]
发表于 2004-04-14 21:54 |只看该作者

如何判断客户端是否断开连接

下面是flw兄对QQ的一些分析,希望对楼主有帮助。


QQ 首选的通讯方式是直接点对点,当然了,这一步也得有服务器的帮助才行。
如果点对点不通了,就会通过服务器转发,老版的 QQ 都可以看见这个提示的:“通过服务器转发”。

这里边关键是使用了一下 UDP 不记录通讯对方的端口号这一特点。
当每个用户链接一次服务器之后,服务器就已经知道客户端是在用哪一个端口了,
所以当 A 的好友 B 要和 A 聊天时,服务器就可以告诉 B,你直接和 A 的那个端口通讯就可以了。




QQ 首选的通讯方式是直接点对点,当然了,这一步也得有服务器的帮助才行。
如果点对点不通了,就会通过服务器转发,老版的 QQ 都可以看见这个提示的:“通过服务器转发”。

xhl 写到:
就是他同过服务器找到聊天对方,然后双方的聊天就完全是两个客户间的通信了,是这个意思吧

那一个问题,要是两个客户端有一个是DHCP分配的动态IP的话,怎么半,能实现这种情况的点对点通信吗?

谢谢了!

DHCP 一般是在机器一开始的时候就已经分配了地址,
比如说 A 采用 DHCP,那么
如果 DHCP 地址租期已满,
而导致本地地址重新分配,那么 B 向 A 的消息发送肯定会失败,如果失败,那么客户端会自动发给服务器去转发,这之间要经过一段时间。分两种情况考虑:
1,如果 A 已经在这段时间内重新链接了服务器,那么服务器将会把 B 的报文转发到 A,客户端 B 会在屏幕上看到“通过服务器转发的”字样。
2,如果 A 尚未察觉自己已经断线,所以并没有链接服务器,那么服务器在转发 B->;A 的报文时也会不成功(A 的地址已经过期),这时,服务器将把这条信息保留到数据库中,并向 B 反馈信息“你的好友已经下线,你所发送的消息将以留言的形式发给他”。在此后的时间内,如果 A 链接到服务器,那么服务器会把这条信息读出来发给 A。

不光是 DHCP,其它的各种情况应该都是这也流程。


声明:
本流程纯粹是本人瞎猜,和腾讯公司无任何关系。
QQ 是否确实已本流程工作,本人不予任何保证。

论坛徽章:
0
5 [报告]
发表于 2004-04-16 21:19 |只看该作者

如何判断客户端是否断开连接

[quote]原帖由 "xhl"][/quote 发表:


虽然不知道是不是对,还是很感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP