UDPServer 与UDPClient的问题(20分)

  • 主题发起人 主题发起人 zzjat
  • 开始时间 开始时间
Z

zzjat

Unregistered / Unconfirmed
GUEST, unregistred user!
比如说,我有几个客户端,启动后跟服务器注册,正常关闭后跟服务器注销,那我的服务器在发送数据时从客户端列表中挨个的发,这样一般情况下是没问题的,问题是,如果某一客户端死机,则无法跟服务器注销,服务器还是一样的发,这样就不对了。
如何让服务器测试他跟某一客户端是不是通的?
通的就发,不通的就不发?
 
你用什么模式做的。是SDK,还是控件。
如是控件,都有相应的错误处理,那样就可以检测客户端非正常断开。
纯API也可以检测其错误代码,做相应的处理。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3352368
 
但UDP控件是无连接的呀
 
QQ是这样做的,做了一个在线列表,每隔一个间隔时间发一个包给服务端,表示自己在线,服务端也有一个检查线程,如果一段时间没收到某ID来的在线包,表示客户断线,从在线列表中删除之
 
我还以为你是TCP呢?[:D][:D]
用户每隔1分钟向服务器刷新自己的在线状态, 利用刷延时间隔来刷新。其中要看NAT会
间隔多久断开其端口映射,(QQ可能是一分钟一次刷新自己的在线状态)。
服务器可以每隔五分(自定)检查所有客户端在线状态,如果不在线就删除。

客户端要记录最通讯时间,也可以在一个线程内检测自己的超时处理。
服务器检测可以用单个线程去检测,并维护在线列表。
 
每隔一个间隔时间发一个包是可以实现的
 
多人接受答案了。
 
后退
顶部