首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Net套接字非常奇怪的自发断开

System.Net套接字非常奇怪的自发断开
EN

Stack Overflow用户
提问于 2013-01-04 19:03:01
回答 1查看 430关注 0票数 3

我有一个自动断开的System.Net套接字,特别是当我在VisualStudio2010调试器中两次查询它的状态时。

它实例化如下:

代码语言:javascript
复制
 _TCPConn = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

稍后,我连接并设置一个循环来查看它的“已连接”属性。。。

代码语言:javascript
复制
     _TCPConn.Connect(this.IPAddress, REMOTE_TCP_PORT);

      // loop to figure out why / when we're disconnecting ...
      int loops;
      bool bState = false;
      for (loops = 0; loops < 100; loops++)
      {
          bState = _TCPConn.Connected;
          if (!_TCPConn.Connected) 
          {
              break;
          }
          Thread.Sleep(1000);
      }

在连接调用之后,其连接属性是调试器中的,网络嗅探器将显示与主机的成功连接。

但是,如果我在调试器中第二次检查已连接的属性,它将显示为false

如果我没有在循环中设置任何断点,那么它会一直贯穿整个循环(100秒),当它掉出时,下一次我在调试器和false中第一次看到连接的属性是真。

如果我让它循环10秒或15秒和断点,那么当我第一次查看调试器时,它将是true,而当我第二次查看它时,它将从循环中掉下来,证明它不仅仅是调试器的工件--它真的被设置为false。

当它断开连接时,网络嗅探器上没有相关的活动,也就是说,主机没有断开它的连接。

这是一个单线程应用程序。我开始研究这个问题,因为后来当我尝试使用我的套接字时,我经常发现它断开连接,并试图找出原因。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-07 15:16:26

该问题似乎是Visual 2010 Express调试器中的一个bug。

正如我在上面的评论中提到的,在调试器的第二次触摸上,这种奇怪的行为发生在两台独立的PC上-- XP机器和Win 7 PC。为了增加更多细节,XP机器连接到一台工业设备,Win7 PC连接到本地主机。两台PC都在运行VisualWeb2010Express。

因此,我尝试了Visual 2010的完整pro版本,但没有遇到这样的行为。

最初导致我开始查找调试器的原始断开问题,在调试器不再断开我之后很容易找到。我认为这是我在30年的编程生涯中所见过的最奇怪的问题之一。

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

https://stackoverflow.com/questions/14163230

复制
相关文章

相似问题

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