TcpListener:如何监听所有接口上的特定端口?

Ian*_*oyd 8 .net sockets tcplistener socketserver

构造一个有三个重载TcpListener:

听听一个特定的端口,但在所有可用的接口.还有就是可以做的过载,但它被标记为obsolete.

使用TcpListener.NET 在所有接口上侦听特定端口的新首选/非过时方法是什么?


为了乐于助人,一个IPEndPoint是:

public IPEndPoint(
    IPAddress address,
    int port
)
Run Code Online (Sandbox Code Playgroud)

这是第三次超载.并且IPAddress作为其构造函数:

  • 一个 byte[]
  • 一个 Int64
  • 一个byte[]和一个Int64

Yah*_*hia 20

只是绑定IPAddress.Any- 通常是这样做的...不确定,但也可能是你需要绑定IPAddress.IPv6Any.

这篇SO帖子暗示你明确地绑定到每个IP地址 - 这个SO帖子有关于如何获得所有IP地址的代码......


来自MSDN:

如果您不关心分配了哪个本地地址,请指定IPAddress.Anylocaladdr参数,并且基础服务提供商将分配最合适的网络地址.


来自MSDN:

IPAddress.Any字段

提供一个IP地址,指示服务器应在所有网络接口上侦听客户端活动.

  • 嗯,无论如何,它意味着"所有IPv4接口". (3认同)
  • 耶稣; 这比我想象的还要糟糕。您必须枚举所有接口,并手动说明您要绑定到所有接口。 (2认同)