【问题标题】:Existing connection close when new TCP connections are made建立新 TCP 连接时关闭现有连接
【发布时间】:2009-05-05 15:19:58
【问题描述】:

我有一个客户端连接到的 TCP 侦听器服务。最近我开始收到与断开连接有关的错误。我将大约 20 个客户端连接到它,并且连接工作正常。但是当我将另外 10 个客户端连接到该服务时,之前的连接会因 10053 或 10054 错误而中断。

以前它使用 100 个客户端运行,但我不确定可能是什么问题。该服务和客户端都在 Windows Server 2003 上运行,因为我发现 Windows XP 存在多个 TCP 连接的已知问题(与 10053 相关)。

【问题讨论】:

    标签: .net sockets tcp


    【解决方案1】:

    嗯,你收到的错误是非常不同的。

    10053 是 WSAECONNABORTED - 连接已中止。这通常是由于您的应用程序堆栈中存在问题(尽管有时会发生)。

    10054 是 WSAECONNRESET - 连接已被对等方重置。这通常是连接另一端的问题。

    你如何测试这个?连接到此服务的“客户”是您编写的吗?如果是这样,您应该在收到 10054 时跟踪客户端发生的情况。

    此外,这可能是由于网络问题造成的,与您的软件无关(直接)。您运行的网络基础架构是否发生了变化?

    【讨论】:

    • 我正在使用一个自定义客户端进行测试,该客户端创建了许多与服务的连接(线程),并且还通过 GNSS Surfer 即 NTRIP 客户端来测试 NTRIP 服务器。 10054似乎是合理的,因为它可能在客户端断开连接时出现,但真正的问题是10053。之前我发现10053与Windows XP有关,但现在在Windows Server 2003中也可以看到问题。
    • 10053 并非特定于 Windows XP - 它通常与网络问题有关。您是在本地(从本地主机)运行客户端,还是通过网络运行到该系统?它是在本地网络中、在单台机器上还是在互联网上运行?
    • 另外,连接是在本地进行的,而不是来自不同的网络。
    • 错误代码可能发生在任何地方。 XP 中有一个错误(由该修补程序修复)导致它不必要地发生。
    • 10053 如果您的服务阻塞太多,也可能发生。如果由于太阻塞而无法使用有效的 TCP 接收消息响应网络,您可能会遇到此问题。你在线程化你的服务吗?
    【解决方案2】:

    我怀疑这是网络问题,或者您可能会在前 20 个客户端连接时看到它发生。只是在黑暗中拍摄,但你是如何处理这些联系的?你在使用某种数组或集合吗?您是否会无意中将现有连接设置为新连接,从而导致系统崩溃?

    【讨论】:

      猜你喜欢
      • 2020-05-11
      • 2012-11-11
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 2020-04-05
      相关资源
      最近更新 更多