【问题标题】:TcpListener: Listen on every address, including GPRS IP addressTcpListener:监听每个地址,包括GPRS IP地址
【发布时间】:2010-10-05 04:03:23
【问题描述】:

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

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

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

那么也许我的 TcpListener 有问题?

它是这样初始化的:

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

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

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

【问题讨论】:

    标签: c# .net networking tcp tcplistener


    【解决方案1】:

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

    This post 有更多关于获取每个 nic 的 IP 地址的信息。

    此外,如果您希望同时侦听每个 IP 地址,则需要为每个 nic 设置一个 TcpListener。

    【讨论】:

    • 有趣的是,测试代码在 Mono 下编译/运行,如果将 IPAddress.Any 传递给构造函数,它确实开始监听 0.0.0.0。
    • 是否使用 IPAddress.Any 类似于使用已弃用的 TcpListener(int Port) 构造函数?
    猜你喜欢
    • 1970-01-01
    • 2018-05-22
    • 2014-06-10
    • 2021-11-14
    • 2011-10-01
    • 2011-06-15
    • 2013-11-05
    • 2011-02-15
    相关资源
    最近更新 更多