子
子陵
Unregistered / Unconfirmed
GUEST, unregistred user!
在编程中,如果Client端的计算机突然掉电或重新启动,Server端的程序怎样才能捕捉
到这一事件的发生
这样的问题网上也很多,结果都是说服务器或客户端定时向对方循环发送包,如果对方没有回应
或是超时就表示断线了.
但我想知道这个具体过程室怎样的?
比如QQ,同时在线的用户有几十万.要维护用户的在线信息,那么如果采用上面所说的循环发包的
方式来检查,在性能和时间上是不是可行.如过QQ不是这样做到,那他是怎么处理的,还有MSN和
ICQ等是如何处理的.
还有什么方法可以处理这个问题.
我设想的一个方案是在服务器端维护一个在线列表,
1)服务器每隔一段时间,就对每个在线列表中状态为true的用户发送一个询问包,
同时把在线用户的状态改为sleep.
2)当客户端受到询问包后,就发送回应包,
3)当服务器端受到回应包后,就将客户的状态置为True.
4)继续循环1,同时把状态还为sleep的用户的状态设为false(下线),并给他的好友发通知.
大家认为这个方案如何,有什么缺陷,欢迎批评!
分不够再加!
到这一事件的发生
这样的问题网上也很多,结果都是说服务器或客户端定时向对方循环发送包,如果对方没有回应
或是超时就表示断线了.
但我想知道这个具体过程室怎样的?
比如QQ,同时在线的用户有几十万.要维护用户的在线信息,那么如果采用上面所说的循环发包的
方式来检查,在性能和时间上是不是可行.如过QQ不是这样做到,那他是怎么处理的,还有MSN和
ICQ等是如何处理的.
还有什么方法可以处理这个问题.
我设想的一个方案是在服务器端维护一个在线列表,
1)服务器每隔一段时间,就对每个在线列表中状态为true的用户发送一个询问包,
同时把在线用户的状态改为sleep.
2)当客户端受到询问包后,就发送回应包,
3)当服务器端受到回应包后,就将客户的状态置为True.
4)继续循环1,同时把状态还为sleep的用户的状态设为false(下线),并给他的好友发通知.
大家认为这个方案如何,有什么缺陷,欢迎批评!
分不够再加!