一开始客户端与服务端是连结成功,但一段时间后,因断网或其它不知什么原因,导致客户端与服务端之间不能传输数据... 我应如何有效的检测它们之间数据不能传输了呢?或者如何知道服务端没有收到客户的数据?
能否讲一下解决的思路?非常感谢呀.如何知道服务端没有收到客户端的数据?
如何知道客户端没有收到服务端的数据?

解决方案 »

  1.   

    我们的方法是用心跳(保活连接)来实现,说来很简单,不管客户端还是服务器端当连接上后没隔一段时间想对方发出一个简短的数据包,一确认对方在线,如长时间未收到对方应答就认为对方连接已经断开,发送数据时要注意Socket给出的错误,一般情况下在发送或接收时产生错误都认为连接已经断开,Delphi的Socket错误事件在TClientSocket的OnError事件中接收,TServerSocket是OnClientError
      

  2.   

    如长时间未收到对方应答就认为对方连接已经断开.这个技术如何来处理?是不是要来一个时钟组件来记录呢?
    TClientSocket的OnError事件中是不应这样处理:open一下.我还有个问题:
    我如何知道服务端收到了数据,在客户端中可以删除刚才发送的数据呢?
      

  3.   

    支持hpain(hpain)所说的,我就是如此实现的,现在用起来没问题