十几分钟后,Socket Server不认识我了!!!(100分)

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

HydonLee

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个三层的应用,是基于Socket Server的,客户端使用TSocketConnection.
但是现在,我打开客户端查询一下数据后,然后离开十几分钟,再回来用打开的程序查询,
出错了!Socket Server不认识我了!!!
"windows socket error:(10054),on API 'recv'"
我必须重新打开客户端才行!!!!
请大家帮帮看,这是怎么回事?
开发环境:Delphi5
Socket Server version: 4.04
 
(10054)
Connection reset by peer.
An existing connection was forcibly closed by the remote host. This normally
results if the peer application on the remote host is suddenly stopped, the host is rebooted, or the remote host uses a hard close (see setsockopt for more information on the SO_LINGER option on the remote socket.)
可能是客户端已经断开了,但服务器还不知道,发送了一个数据包给不存在的客户端。
你后来重启客户端,那么就等于重新连接了。
 
ScktSrvr有个超时选项,把指定时间内不活动的客户端连接断开了,而客户端这边是收不到通知的。
所以会出这个错---很正常的现象,解决办法在两个
1、把ScktSrvr的超时功能关闭
2、你保证程序在指定时间内访问一下服务器。
 
To ego:
请问这样产生的原因可能是什么???有见到过这样的问题吗???
To: szf:
我知道有这个, 可是我的设置是没有问题的, 我是设置是:0
 
不会是电源管理造成的问题吧~~~
 
To szf:
应该不是,我的是专门的server,其实只要把程序关掉重开一下就可以了...
 
处理onclienterror和onclientdisconnect事件,看看是那个client断开了。
但如果是client非正常退出,srv是不知道的,简单的做法是定义cli和srv经常的交互来判断连接是否正常。
 
我也遇到这样的问题,很烦人的,请高手们讲讲这方面产生的原因
 
多人接受答案了。
 
后退
顶部