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

C#程序监听0.0.0.0,但不是192.168.x.x,c#,firewall,C#,Firewall,我有一个用C#制作的软件,它在端口5000上打开一个侦听器,通过网络侦听传入的流量。为了测试以确保其正常工作,我有一个具有以下代码集的程序: Int32 port = 11000; IPAddress localAddr = IPAddress.Parse("192.168.x.x") client = new TcpClient(); client.Connect(localAddr, port); 根据my netstat-my listener程序正在侦听,如下所示: 0.0.0.0:

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

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

client = new TcpClient();
client.Connect(localAddr, port);
根据my netstat-my listener程序正在侦听,如下所示:

0.0.0.0:11000*收听

在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
    。到目前为止,我在问题和编辑历史记录中看到了连接端口
    5000
    11000
    的尝试,但从未看到
    1000
  • 确保你的防病毒软件没有干扰。它可能会将异常端口上的流量视为病毒。事实上,speedguide在过去指出

找到了问题。安装软件的人员在防火墙规则和软件安装完成后没有重新启动系统。我一定会用鼠标打他们失败,因为我多次要求他们这么做


重新启动后,它开始监听192.168.x.x地址,一切正常。

有一个例子显示一些默认使用端口5000的程序-它们中的任何一个可以在顽固的计算机上运行吗?@AndrewMorton我也尝试了端口11000,它做了同样的事情。这是C而不是VB。192.168.x.x中的x.x只是一个地方吗持有人因为否则这不是一个有效的IP地址。你可以编一些数字以避免混淆,并且不泄露任何你不想泄露的信息。没有人会更聪明。我的2美分。对不起,这是个打字错误。我把它设为11000。反病毒在两台计算机之间没有问题,因为它在另一台计算机上工作。运行监听软件的两台计算机之间的唯一区别是,不工作的计算机是Win 10 1909,工作的计算机是1809。不确定是否有区别。