C# TcpListener:监听每个地址,包括GPRS IP地址

C# TcpListener:监听每个地址,包括GPRS IP地址,c#,.net,networking,tcp,tcplistener,C#,.net,Networking,Tcp,Tcplistener,我们有一个简单的遗留软件,我们需要使用它 通过端口15001使用TCP/IP进行通信。我们需要监听端口15001 让遗留软件建立连接,然后读取它发送给我们的任何内容 我们已经在互联网上测试了这个解决方案,效果很好。 但是,如果我们在GPRS TCP/IP网络上测试相同的解决方案,则不会 所有的基础都已经检查过了,我们可以ping GPRS网络中的其他设备 端口15001未被任何防火墙阻止 也许我的TcpListener有问题 它的初始化方式如下: tcpServer = new TcpListe

我们有一个简单的遗留软件,我们需要使用它 通过端口15001使用TCP/IP进行通信。我们需要监听端口15001 让遗留软件建立连接,然后读取它发送给我们的任何内容

我们已经在互联网上测试了这个解决方案,效果很好。 但是,如果我们在GPRS TCP/IP网络上测试相同的解决方案,则不会

所有的基础都已经检查过了,我们可以ping GPRS网络中的其他设备 端口15001未被任何防火墙阻止

也许我的TcpListener有问题

它的初始化方式如下:

tcpServer = new TcpListener(IPAddress.Any, TCP_PORT);
我假设它监听系统上所有可用的支持IPv4的接口, 因为我用了IPAddress,有吗


有人知道这两个网络之间的区别吗?(即使不应该有任何区别)如果我需要更改我的TcpListener?

您需要指定要侦听的IP地址,而不是IPAddress.any。看见当您使用IPAddress.Any时,它会自动为您选择网络接口。要在某个接口(在您的情况下为GPRS)上进行监听,您必须在构造器中使用正确的IP

提供了有关获取每个nic的IP地址的详细信息


另外,如果您希望一次侦听每个IP地址,那么每个nic都需要一个TcpListener。

有趣的是,在Mono下编译/运行的测试代码,如果IPAddress.Any被传递给构造函数,它会在0.0.0.0上开始侦听。正在使用IPAddress。与使用TcpListener(int端口)类似不推荐使用的构造函数?