首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在TCP套接字中出现SocketError.ConnectionReset的可能原因是什么?

在TCP套接字中出现SocketError.ConnectionReset的可能原因是什么?
EN

Stack Overflow用户
提问于 2013-07-29 11:47:33
回答 4查看 8.5K关注 0票数 3

我有一个基于TCP套接字的客户端服务器系统。一切正常,但是当网络断开、从客户端重新连接时,我会自动获得SocketError.ConnectionReset发送表单客户端,对于这个命令,套接字在服务器端关闭。这也没问题。

但是当我查看客户端时,它显示套接字仍然与服务器连接。(关于套接字仍然与服务器连接,它不是每次都发生,有时显示断开连接,有时显示已连接)

“服务器从客户端获得SocketError.ConnectionReset,但客户端仍然连接”,这是否合理?

因此,我想知道SocketError.ConnectionReset的可能原因是什么,以及如何处理我提到的这类问题?

我再说一遍,在正常环境下,一切都很正常(例如,如果我退出客户端,就会断开服务器的套接字)。

提前谢谢。

编辑:

这是客户端的代码。实际上,它是一个计时器,每3秒在程序生存期内滴答一次,检查套接字是否已连接,是否断开,然后尝试通过新的套接字实例重新连接

代码语言:javascript
复制
private void timerSocket_Tick(object sender, EventArgs e)
        {
            try
            {
                if (sck == null || !sck.Connected)
                {
                    ConnectToServer();
                }
            }
            catch (Exception ex)
            {
                RPLog.WriteDebugLog("Exception occcured at: "+ System.Reflection.MethodBase.GetCurrentMethod().ToString()+"Message: "+ex.Message);
            }
        }

在正常情况下(没有网络断开/重新连接),如果TCP服务器获得任何客户端的SocketError.ConnectionReset表单,我会在客户端看到客户端套接字断开连接,并试图通过显示的代码重新连接它。但是,当情况发生时,前面已经解释过了,服务器得到一个SocketError.ConnectionReset,但是客户机显示它仍然是连接的。虽然TCP服务器显示重置命令是从确切的客户端发送的。

EN

回答 4

Stack Overflow用户

发布于 2013-07-29 22:07:23

有几个原因,但最常见的是,你已经写到一个连接已经关闭,但他的另一端。换句话说,应用程序协议错误。当它发生时,你别无选择,只能关闭插座,它已经死了。但是,您可以修复根本原因。

票数 1
EN

Stack Overflow用户

发布于 2013-07-30 07:25:48

在讨论这样的TCP/IP问题时,您必须提到客户端和服务器之间的网络细节。

当一方说连接被重置时,这仅仅意味着在线路上会出现一个RST数据包。但是要知道谁发送RST数据包以及为什么,您必须利用网络数据包捕获(通过使用Wireshark和其他类似工具),

协议

在.NET框架级别上,您将很难找到原因。

票数 1
EN

Stack Overflow用户

发布于 2016-11-03 16:29:35

按原样使用Socket.Connected的问题是,它只在最后一次发送或接收操作时给出连接状态。也就是说,它不会告诉您套接字已经断开,除非您首先尝试向它发送一些数据或从它接收数据。

来自对Socket.Connected属性的MSDN描述:

获取一个值,该值指示套接字是否在上次发送或接收操作时连接到远程主机。

因此,在您的示例中,如果套接字上次发送或接收任何数据时运行正常,那么timerSocket_Tick()方法将永远不会调用ConnectToServer(),即使套接字现在没有连接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17923191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档