【问题标题】:Socket seems to give problem on external network套接字似乎在外部网络上出现问题
【发布时间】:2025-06-29 09:45:01
【问题描述】:

我有一个与服务器通信并充当客户端和真实服务器之间的代理的 Windows 服务。客户端数据被发送到服务器,服务器的数据返回给客户端。以上两个是完全独立的,因为它们运行在不同的线程上。

以下是步骤:-

  1. 侦听器接受的套接字
  2. 线程 1 - 从服务器接收数据并将其发送到客户端
  3. 线程 2 - 从客户端接收数据并将其发送到服务器

在本地网络上连续几个小时没有问题(如果客户端和服务器在同一台机器或同一本地网络上)

当客户端在不同的网络上时,问题就出现了。我的服务器在一个 Win2003 服务器上监听并且有一个公共 IP。当客户端尝试使用公共 IP + 端口连接到此服务器时,会建立连接,但很快就会断开连接并抛出 SocketException(10053 - 连接被本机上的软件中止)。这台机器上没有运行杀毒客户端,windows防火墙是关闭的。

**更新

该服务正在客户端服务器上运行,我不太确定是否有任何其他防火墙。该服务在我的 Win2003 服务器上运行良好,客户端在我的网络上,但在不同的服务器上出现问题,客户端在不同的网络上。

【问题讨论】:

  • 两个网络之间是否有其他防火墙?

标签: .net sockets


【解决方案1】:

我要做的第一件事是在两个盒子上运行 WireShark,看看到底发生了什么。

【讨论】:

    【解决方案2】:

    问题出在 Windows XP SP2 本身。我尝试从 Windows Server 2003 或 Vista 连接客户端,它工作正常。以下链接解释了该问题:http://support.microsoft.com/kb/938566

    我还尝试更新到 SP3 并应用上述修补程序,但它对我没有帮助。但无论如何,该链接解释了 Windows XP 的问题,并且客户端在 Server 2003 和 Vista 上运行良好。

    【讨论】:

      最近更新 更多