我们有一个简单的遗留软件,我们需要通过端口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.