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

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

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

已经检查了所有基础知识,我们可以ping通GPRS网络中的其他设备,并且端口15001不会被任何防火墙阻止。

那么我的TcpListener可能有问题吗?

它初始化如下:

tcpServer = new TcpListener(IPAddress.Any, TCP_PORT); 

我假设它监听系统上每个可用的IPv4接口,因为我使用了IPAddress.Any?

有没有人知道这两个网络之间的区别是什么? (即使没有任何区别)如果有什么我需要更改为我的TcpListener?

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

这篇文章提供了有关获取每个nic的IP地址的更多信息。

此外,如果您希望一次监听每个IP地址,则每个NIC都需要一个TcpListener。