我正在处理一个商业应用程序,它会抛出带有消息的SocketException,现有连接被远程主机强制关闭。这发生在客户端和服务器之间的套接字连接上。连接是活动的和良好的,大量的数据正在被传输,但随后它就从不知道的地方断开了连接。有人见过这个吗?原因是什么?我可以猜到几个原因,但有没有办法在这段代码中添加更多的内容来找出原因呢?欢迎任何意见/想法。..最新的.。我有一些.NET跟踪的日志记录,System.Net.Sockets Verbose: 0 : [8188] Socket#30180123::Send() DateTime=2010-04-07T20:49:48.6317500ZSystem.Net.Sockets Error: 0 :
[8188] Exception in the Socket#30180123::Send - An existing connection was forcibly closed by the remote host DateTime=2010-04-07T20:49:
48.6317500Z System.Net.Sockets Verbose: 0 : [8188] Exiting Socket#30180123::Send() -> 0#0基于日志记录的其他部分,我看到了这样一个事实,即“0#0”表示发送的数据包长度为0字节。但这到底意味着什么?有两种可能性,我不确定哪一种,1)连接正在关闭,但数据随后被写入套接字,从而创建了上述异常。0#仅仅意味着没有发送任何东西,因为套接字已经关闭。2)连接仍然处于打开状态,一个零字节的数据包正在发送(即代码有一个错误),0#表示一个零字节的数据包正在试图发送。你觉得呢?我想这可能是不确定的,但也许其他人见过这样的事情?
3 回答
函数式编程
TA贡献1807条经验 获得超9个赞
这通常意味着远程端关闭了连接(通常通过发送tcp/ip)。RST
(邮包)如果您正在使用第三方应用程序,可能的原因是:
- 您正在向应用程序发送格式错误的数据。
- 由于某种原因,客户机和服务器之间的网络连接正在中断。
- 您在第三方应用程序中触发了一个导致其崩溃的错误。
- 第三方应用程序已经耗尽了系统资源。
30秒到达战场
TA贡献1828条经验 获得超6个赞
SocketError errorCode; int nBytesRec = socket.EndReceive(ar, out errorCode); if (errorCode != SocketError.Success) { nBytesRec = 0; }
- 3 回答
- 0 关注
- 2947 浏览
添加回答
举报
0/150
提交
取消