在socket编程中何快速处理连接非正常断开(请高手们进来讨论!)(100分)

  • 主题发起人 主题发起人 deepfar
  • 开始时间 开始时间
D

deepfar

Unregistered / Unconfirmed
GUEST, unregistred user!
当Socket的server 与 client 连接后,因突发事件导致连接非正常断开,如何能在最短的时间内作出反应,并耗费系统资源最少?
目前本人用的是 心跳机制 在SocketStream 的TimeOut为假后发送心跳,保持每次WaiteForData 都有数据收发. 虽可以处理,但自认为不好,我想能否在两各单方面解决这个问题,不依赖心跳??
 
比较难,估计只能使用双方定时握手信号了。
 
用阻塞,socket set timeout
行不行?
 
用异常不能在最短时间内作出反应
以前也用楼上说的定制握手协议了
没发现最好的方法
除非对Windows Socket 非常了解,
估计涉及网络传输,如果客户端较多,都是不好整地
顺便关注
 
握手即心跳,真的没有更完美的解决方案吗?
 
只有心跳了。没有更好的
 
其实,断开只是一个概念,在数据连路层你就知道了。
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3438148
 
indy用的是多线程阻塞读尝试机制,当断线时,马上会有raise,这也是一种机制,和心跳机制大同小意
 

Similar threads

后退
顶部