code - obtener ip con nombre de maquina java
Java obtiene IP local (2)
Esta pregunta ya tiene una respuesta aquí:
Estoy tratando de obtener la IP local. Debería funcionar con
System.out.println(Inet4Address.getLocalHost().getHostAddress());
o
InetAddress addr = InetAddress.getLocalHost();
ip = addr.getHostAddress();
System.out.println("Ip: " + ip);
pero siempre devuelve 192.168.178.154
lugar de 192.168.178.119
(Esta es mi IP local real (Terminal -> ifconfig
))
¿Qué tengo que hacer?
Parece que tienes dos direcciones IP.
En una computadora que tiene un adaptador de red, la dirección IP que se elige es la dirección IP principal del adaptador de red en la computadora. Sin embargo, en una computadora de múltiples servidores, la pila debe primero hacer una elección. La pila no puede hacer una elección inteligente hasta que conozca la dirección IP de destino para la conexión.
Cuando el programa envía una llamada connect () a una dirección IP de destino, o envía una llamada send () a un datagrama UDP, la pila hace referencia a la dirección IP de destino, y luego examina la tabla de rutas IP para que pueda elegir la mejor red Adaptador sobre el cual enviar el paquete. Después de que se haya elegido este adaptador de red, la pila lee la dirección IP primaria asociada con ese adaptador de red y usa esa dirección IP como la dirección IP de origen para los paquetes salientes.
Si desea activar la segunda IP y su LAN, por ejemplo, desenchúfela y luego de 10 segundos, vuelva a enchufarla. Se puede seleccionar otra IP como IP del host en la tabla de enrutamiento.
Puedes obtener la segunda IP de getNetworkInterfaces
.
Intenta ejecutar el siguiente código:
public static void main(String[] args) throws Exception
{
System.out.println("Your Host addr: " + InetAddress.getLocalHost().getHostAddress()); // often returns "127.0.0.1"
Enumeration<NetworkInterface> n = NetworkInterface.getNetworkInterfaces();
for (; n.hasMoreElements();)
{
NetworkInterface e = n.nextElement();
Enumeration<InetAddress> a = e.getInetAddresses();
for (; a.hasMoreElements();)
{
InetAddress addr = a.nextElement();
System.out.println(" " + addr.getHostAddress());
}
}
}
Si su sistema está configurado con múltiples IP, entonces haga esto.
try {
InetAddress inet = InetAddress.getLocalHost();
InetAddress[] ips = InetAddress.getAllByName(inet.getCanonicalHostName());
if (ips != null ) {
for (int i = 0; i < ips.length; i++) {
System.out.println(ips[i]);
}
}
} catch (UnknownHostException e) {
}