ServerSocket 怎样判断Clientsocket的的异常退出 ( 积分: 100 )

  • 主题发起人 主题发起人 hzm7512
  • 开始时间 开始时间
H

hzm7512

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位:
当ClientSocket异常退出时,Serversocket的ServerSocketClientError,ServerSocketClientDisconnect等事件都不触发,并且
Serversocket.socket.activeconnects也没有变化,请问怎样在最短的事件里确定Clientsocket的异常退出呢?并更新Serversocket.socket.activeconnects呢??
谢谢了!
 
请问各位:
当ClientSocket异常退出时,Serversocket的ServerSocketClientError,ServerSocketClientDisconnect等事件都不触发,并且
Serversocket.socket.activeconnects也没有变化,请问怎样在最短的事件里确定Clientsocket的异常退出呢?并更新Serversocket.socket.activeconnects呢??
谢谢了!
 
有触发onclienterror,如果没有正常退出,例如用任务管理器强行关闭
 
我是这样做的:
ClientSocket定时给Serversocket发消息,比如10秒一次,Serversocket每次收到消息就
用一个变量记录下时间,服务器定时检查ClientSocket上次发消息的时间,如果大于1分钟
没收到ClientSocket的消息则认为客户端已经断开了,这样不是最好的方法,但在我没有找
到更好的方法时只有暂时这样了!
 
加入心跳包
 
心跳包有一定的格式吗?
是不是随便在Serversocket和Clientsocket中有个信号量就可以吗?
1_1_1_1的做法应该是心跳包的方法?
还有比这更好的办法,
我总觉的这种办法是可以解决问题的,但是我总是怀疑还有比这更好的方法,
 
赞同1_1_1_1的处理方法。
 
同意楼上,心跳包!
 
赞同1_1_1_1
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
I
回复
0
查看
975
import
I
后退
顶部