delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
C/S Soekct编程问题。S端提示C已经断开,为什么C端还是连接状态? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061123131217273.html
本人使用了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端也应该断开呀。

这个Socket   没有响应断开的事件。  
  要自己在使用的时候做一下判断。

idTCPClient和idTCPServer控件   应该可以的吧   S没反应   C不传就行了~

这个地方的问题非常复杂。提示你判断client是否还是活动的办法,只有超时,client是否连接server只有通过send数据看是否出现异常!

用控件是会有这些问题,除非你非常详细的了解控件的实现,在我看来,还不如用winScock   Api直接做。

我还不是能能明白你的   意思     :   我大概讲一下   c   /   s   tcp的断开  
   
  1.如果果双方正常断开,是问题的  
  2.在异常情况下,     发送这端能立刻检测到   ,接收端是没反映的  
  3.如果要保持即时获取   断开   情况   ,   必须保持   有数据通信(心跳),自己写代码  
  4.如果控件没有做到2那么控件有问题;   我想delphi里面这几都应该不会这个问题,  
   
  5.基于你上面的情况   ,我不是很了解,问一下,     你的   cs是   不是在路由器的两端?  
 

谢谢。问题已经解决

to   ffx132()您能吧你上述程序的源码贴出来共享一下吗?多谢  
 

判断SocketError

94,把源代码共享一下,大家分享,呵呵

posted on 2009-05-26 17:28 delphi2007 阅读(328) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。