2011-08-30 114 views
6

有三个重载构建TcpListenerTcpListener:如何侦听所有接口上的特定端口?

听一个特定的端口,但在全部 availa ble接口。有一个过载可以做到这一点,但它被标记为obsolete

在.NET中使用TcpListener的所有接口上的特定端口进行侦听的新优先/非淘汰方法是什么?


对于乐于助人起见,一个IPEndPoint是:

public IPEndPoint(
    IPAddress address, 
    int port 
) 

这是第三过载是什么。和IPAddress需要,因为它的构造:

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

回答

19

只需绑定到IPAddress.Any - 这是怎么这通常..不知道,但可能是你需要绑定到IPAddress.IPv6Any

SO post建议您绑定到每个IP addresse明确 - 这SO post对如何获得的所有IP代码不会忽略...


MSDN

如果你这样做不关心分配了哪个本地地址,请为localaddr参数指定IPAddress.Any,并且底层服务提供商将分配最合适的网络地址。


MSDN

IPAddress.Any

提供指示服务器应该监听客户端活动上所有网络接口的IP地址。

+1

耶稣;它比我想象的更糟糕。你必须枚举所有的接口,并手动说你想绑定到所有的接口。 –

+0

与Mono的Linux,它足以绑定到任何因为这是“实际0.0.0.0”,这意味着“所有接口”...... – Yahia

+2

嗯,它意味着“所有IPv4接口”,无论如何。 –