C/S Soekct编程问题。S端提示C已经断开,为什么C端还是连接状态?(100分)

  • 主题发起人 主题发起人 ffx132
  • 开始时间 开始时间
F

ffx132

Unregistered / Unconfirmed
GUEST, unregistred user!
本人使用了D6自带的Socket控件,做了一个C/S程序。C向S端发送图片数据,加入了网络出错后能重新连接的方法。刚开始连接后可正常传送图片数据到S端。而且手动断开后(如:S端关闭,IP被修改,掉线等)也能够自动连接上。但传送5到10个小时后(时间不固定)。C与S连接就有问题了。S端显示C端已经断开(S端有显示功能),C端没有反应。我故计C端本身还认为自己在连接状态。但就奇怪了。S端事件处理中已经显示C断开了呀?重新启动C端又能正常运转!
本人以为是控件问题就换了Indy的idTCPClient和idTCPServer控件。结果也出现一下的情况--正常运转一段时间后。就不再传了。S端也提示C端已经断开。C端也停止了。
后来使用其它方法,用了两套控件,一套测试C与S的是否连接,另一套主要是发送图片数据。问题照旧。
有那位高手能帮帮我呀。我使用了很多方法都没解决这个问题?按道理说S端都提示断开了。C端也应该断开呀。
 
代码?代码错误和真正的掉线都可能造成你说的异常。
 
是不是C端沒有捕捉S端斷開所返回的異常?
 
C或S端每隔几分钟就向对方发送一个字符(简单的心跳),就不会有这个问题了
 
C端定时监测S端,发送消息,看是否超时,以监测在线情况
 
楼主, 问题解决没?
怎么解决的?
 
谢谢大家的。问题我已经解决了!原来是C端一直都是处于被动接收状态。所以造成S断开后。C就没有反应。
我使用的INDY控件。我在C中的读取线程中,加入了ReadlnTimeout判断后能开确定C端是否要断开。

再次感谢几位热心的朋友。
 
我总觉得indy比以前的控件还差,一直没用。
 
会有这样的问题的,我不用indy的
 
后退
顶部