TcpListener: как прослушивать определенный порт на всех интерфейсах? - PullRequest
8 голосов
/ 30 августа 2011

Существует три перегрузки для построения TcpListener:

i хочу прослушивать определенный порт, но на всех доступных интерфейсах. была перегрузка, доступная для этого, но она была помечена как obsolete.

Каков новый предпочтительный / не устаревший способ прослушивания определенного порта на всех интерфейсах сTcpListener в .NET?


Для удобства IPEndPoint:

public IPEndPoint(
    IPAddress address,
    int port
)

, чточто такое 3-я перегрузка.И IPAddress принимает в качестве своего конструктора:

  • a byte[]
  • и Int64
  • a byte[]и Int64

1 Ответ

20 голосов
/ 30 августа 2011

Просто привяжите к IPAddress.Any - вот как это обычно делается ... не уверен, но, возможно, вам нужно привязать к IPAddress.IPv6Any.

Этот SO пост предполагает, что вы явно привязываетесь к каждому IP-адресу - и этот SO пост содержит код о том, как получить все IP-адреса ...


С MSDN :

Если вам все равно, какой локальный адрес назначен, укажите IPAddress.Any для параметра localaddr, и основной поставщик услуг назначит наиболее подходящий сетевой адрес.


С MSDN :

IP-адрес. Любой Поле

Предоставляет IP-адрес, указывающий, что сервер должен прослушивать активность клиента на всех сетевых интерфейсах.

...