C# 程序监听 0.0.0.0 但不是 192.168.x.x

C# Program Listening on 0.0.0.0 but not 192.168.x.x

我有一个用 C# 编写的软件,它在端口 5000 上打开一个侦听器来侦听网络上的传入流量。为了测试以确保它正常工作,我有一个包含以下代码集的程序:

Int32 port = 11000;
IPAddress localAddr = IPAddress.Parse("192.168.x.x")

client = new TcpClient();
client.Connect(localAddr, port);

根据我的 netstat -我的侦听器程序正在侦听:

0.0.0.0:11000 * LISTENING

它没有显示在 192 上收听。168.X.X。

当我 运行 测试程序时,它给我一个套接字 80004005 错误,表明连接被主动拒绝。当我 运行 在另一台计算机上测试程序时,它说它没有收到返回信号并超时。当我检查防火墙日志时,它说没有任何东西被阻止。我什至有防火墙规则来允许端口甚至 .exe 只是为了确保它获得所有流量。

我有另一台装有监听软件的电脑,它用 netstat 显示这个

192.168.x.x:11000        *         LISTENING
0.0.0.0:11000            *         LISTENING

这台电脑运行良好。测试程序将毫无问题地运行。

如果防火墙不是问题,正如我通过日志看到的那样,并且规则允许所有流量流向监听程序,为什么它被主动拒绝而不回应?为什么在这台机器上它不监听 192.168.x.x 地址作为工作地址?

我还不能确切地说出发生了什么,但我可以建议一些检查事项:

  • 请记住涉及两个 防火墙:用于限制传入连接的服务器防火墙,以及用于限制出站连接的本地计算机防火墙。确保检查这两个;有时不常用的出站端口会被屏蔽
  • 你说 netstat 显示你的监听器使用 0.0.0.0:1000。这表示端口 1000。到目前为止,我已经在问题和编辑历史记录中看到连接到端口 500011000 的尝试,但从来没有 1000.
  • 确保您的防病毒软件没有干扰。它可能会将不寻常端口上的此流量视为指示病毒。事实上,speedguide 表示 port 1000 has been used by trojans 过去。

发现问题。安装软件的人在防火墙规则和软件安装完成后没有重启系统。我一定会用鼠标失败击中他们,因为我要求他们多次这样做。

重新启动后,它开始侦听 192。168.x.x 地址,一切正常。