关于ServerSocket/ClientSocket的10054错误!!!(100分)

  • 主题发起人 主题发起人 gamblegod
  • 开始时间 开始时间
G

gamblegod

Unregistered / Unconfirmed
GUEST, unregistred user!
当用ClientSocket/ServerSocket建立TCP连接时,如果其中通讯的一方断开连接时,
会在另一方产生一个OnError事件,比如,我用ClientSocket主动建立连接后,服务器
在进行一定的处理后,返回给ClientSocket一些数据后关闭Socket。这时,在ClientSocket
会产生10054(被远端服务器强行关闭的错误),并在以后会触发Receive Error和Disconnect Error事件,
所以直接导致我的数据接收有问题。小弟现在有几个问题:
1、本来TCP连接的通讯一方关闭socket属正常情况,为什么会产生10054的错误?
2、在产生Receive Error后,是否暗示这次数据接收失败?
3、在产生Disconnect Error事件后,该socket连接是否关闭?
 
1、你是怎么关掉Server的Socket的?
2、接受到Receive Error应该是数据接收失败
3、应该是关闭的,只是不是正常的Disconnect
 
其实Server也不一定要是ServerSocket编写,我可以用C编写,在发送给客户方的数据后,
调用Close关闭,如果是ServerSocket,我可以在OnSend事件中发送完数据后直接关闭该Socket
:Socket.Close。ClientSocket给我的感觉是:好象只能它主动关闭连接,否则会发生错误。
 
你是用的NonBlocking方式吧。
不要在OnSend事件中关闭Socket因为这个时候你的数据可能还没发出去。
或者你发给ClientSocket一个信号让它关闭连接。
 
我用ServerSocket作服务器,一切正常呀.
 
其实实际情况是这样的,我用ClientSocket连接Linux下的服务器,在建立连接后,服务器
开始处理客户端的请求,并返回客户端数据,处理完后即关闭Socket。这时,ClientSocket
即会发生错误(在OnError事件中处理),有Receive Error和Disconnect Error两种,现在是
Receive Error会导致客户端的数据接收错误。
 
多人接受答案了。
 
后退
顶部