Obtener todas las direcciones IP en la máquina

¿Cómo puedo obtener todas las direcciones IP conectadas a la máquina en la que se está ejecutando mi aplicación (aplicación C # NET Console)? Necesito vincular un servicio WCF a la dirección IP principal y devolver una lista de la lista completa de direcciones IP.

using System.Net; string myHostName = Dns.GetHostName().ToString(); string ipAddress = Dns.Resolve(HostName).AddressList[0].ToString(); 

Esto es lo que estoy usando en este momento para obtener la dirección IP principal, pero no puedo encontrar la manera de obtener el rest para devolverlos.

Si enlace un servicio WCF a localhost: 8000, ¿eso lo expondrá en el primario?

Creo que este ejemplo debería ayudarte.

 // Get host name String strHostName = Dns.GetHostName(); // Find host by name IPHostEntry iphostentry = Dns.GetHostByName(strHostName); // Enumerate IP addresses foreach(IPAddress ipaddress in iphostentry.AddressList) { .... } 

Editar:

“No existe una dirección IP” principal “.

La tabla de enrutamiento determina qué dirección IP hacia afuera se usa dependiendo de la dirección IP de destino (y por extensión, la interfaz de red, que a su vez puede ser virtual o física) “.

Las variantes DNS funcionan en toda la red, pero una entrada DNS puede tener muchas direcciones IP y una dirección IP puede tener muchas entradas DNS. Más importante aún, una dirección no necesita estar vinculada a una entrada de DNS en absoluto.

Para la máquina local prueba esto: –

  foreach (NetworkInterface netInterface in NetworkInterface.GetAllNetworkInterfaces()) { Console.WriteLine("Name: " + netInterface.Name); Console.WriteLine("Description: " + netInterface.Description); Console.WriteLine("Addresses: "); IPInterfaceProperties ipProps = netInterface.GetIPProperties(); foreach (UnicastIPAddressInformation addr in ipProps.UnicastAddresses) { Console.WriteLine(" " + addr.Address.ToString()); } Console.WriteLine(""); } 

¿Por qué no solo enlazar a 0.0.0.0?
De esa manera escuchas en todos ips

Probablemente debería vincularse a 0.0.0.0:8000 , que lo expondrá en todas las direcciones IP disponibles y solo se vinculará a una dirección IP particular si el usuario / administrador lo exige.

 IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName()); 

Creo que OP está preguntando cómo obtener todas las direcciones en una NIC local, no solo aquellas direcciones conocidas por DNS. Por primaria, probablemente se refiera a la dirección principal en “usar la siguiente dirección IP” en las propiedades del adaptador, y por “el rest” probablemente se refiera a las enumeradas en Advanced> (Additional) IP Addesses.

DNS no necesariamente conocerá esos.