J jackey89888 Unregistered / Unconfirmed GUEST, unregistred user! 2009-01-06 #1 如题好友上线后,会发来上线包,确认上线。然后如果他下线了它会发来下线报,但是也可能他掉线了,这样就没法收到他的在线信息了。我也想过用计时器来做,比如,要求每分钟发一个在线包,以确认在线状态,如果超过一分钟没有在线包,就判断掉线。但是具体做起来不好办啊,设置好多计时器么?谁有比较好的方法。
如题好友上线后,会发来上线包,确认上线。然后如果他下线了它会发来下线报,但是也可能他掉线了,这样就没法收到他的在线信息了。我也想过用计时器来做,比如,要求每分钟发一个在线包,以确认在线状态,如果超过一分钟没有在线包,就判断掉线。但是具体做起来不好办啊,设置好多计时器么?谁有比较好的方法。
N nolliman Unregistered / Unconfirmed GUEST, unregistred user! 2009-01-06 #2 你把計時器放在服務器和客戶端不就可以了~~~~~~~客戶端最好在運行你的程序的時候只開一個計時器,要不當打開多個客戶端的時候就可能會造成網絡風暴了!!!!
N nolliman Unregistered / Unconfirmed GUEST, unregistred user! 2009-01-06 #3 純屬個人見解,你看看其他大蝦還有沒有更創造性的方法!
龙 龙之吻 Unregistered / Unconfirmed GUEST, unregistred user! 2009-01-06 #4 服务器定时询问,无应答的客户端视为掉线,服务器再通知其在线好友他掉线了纯属个人愚见
W wuchunhua Unregistered / Unconfirmed GUEST, unregistred user! 2009-01-08 #6 对 就是心跳包, 间隔周期时间发送一个心跳包超过多少周期没有接收到心跳包,或没有心跳回复包 认为掉线
C Crazy119 Unregistered / Unconfirmed GUEST, unregistred user! 2009-01-08 #7 我的做法了是客户端每分钟发个心跳包给服务器,服务器收到这个心跳包后,将这个客户端的空闲计时清零。服务器设一个时钟计算客户端的空闲时间,若超过1分钟就断掉与它的连接,并视为掉线,然后通过其它客户端。