2011-08-30 27 views
6

Hay tres sobrecargas para la construcción de un TcpListener:TcpListener: ¿Cómo escuchar un puerto específico en todas las interfaces?

i quiero para escuchar en un puerto en particular, sino en todos availa ble interfaces. No era una sobrecarga disponible para hacer eso, pero se ha marcado como obsolete.

¿Cuál es la nueva forma preferida/no obsoleta de escuchar en un puerto particular en todas las interfaces con un TcpListener en .NET?


Por el amor amabilidad, un IPEndPoint es:

public IPEndPoint(
    IPAddress address, 
    int port 
) 

que es lo que la tercera es la sobrecarga. Y un IPAddress lleva, como su constructor:

  • un byte[]
  • un Int64
  • un byte[] y un Int64

Respuesta

19

Sólo se unen al IPAddress.Any - así es como esto se suele hacer .. . No estoy seguro, pero podría ser que también deba vincularse al IPAddress.IPv6Any.

Este SO post sugiere que se asocie a cada IP addresse explícitamente - y esto tiene SO post código sobre cómo conseguir todos los IP adresses ...


De MSDN:

Si lo hace no importa qué dirección local esté asignada, especifique IPAddress.Any para el parámetro localaddr y el proveedor de servicios subyacente asignará la dirección de red más adecuada.


De MSDN:

IPAddress.Any campo

proporciona una dirección IP que indica que el servidor debe escuchar la actividad del cliente en todos los interfaces de red.

+1

Jesus; es peor de lo que pensaba.Debe enumerar todas las interfaces y decir manualmente que desea vincularlas a todas. –

+0

en Linux con Mono es suficiente para enlazar a Any porque eso es "en realidad 0.0.0.0" y significa "todas las interfaces" ... – Yahia

+2

Bueno, significa "todas las interfaces IPv4", de todos modos. –

Cuestiones relacionadas