Creación de un objeto InetAddress en Java

Estoy tratando de convertir una dirección especificada por un número de IP o un nombre, ambos en String (es decir, localhost o 127.0.0.1 ), en un objeto InetAdress . No hay un constructor sino métodos estáticos que devuelven una InetAddress . Entonces, si obtengo un nombre de host, no hay problema, pero ¿qué ocurre si obtengo el número de IP? Hay un método que se convierte en byte [] pero no estoy seguro de cómo eso puede ayudarme. Todos los demás métodos obtienen el nombre de host.

Documentación de API de InetAddress

Debería poder usar getByName o getByAddress .

El nombre de host puede ser un nombre de máquina, como “java.sun.com”, o una representación textual de su dirección IP

 InetAddress addr = InetAddress.getByName("127.0.0.1"); 

El método que toma una matriz de bytes se puede usar así:

 byte[] ipAddr = new byte[]{127, 0, 0, 1}; InetAddress addr = InetAddress.getByAddress(ipAddr); 

De la API para InetAddress

El nombre de host puede ser un nombre de máquina, como “java.sun.com”, o una representación textual de su dirección IP. Si se proporciona una dirección IP literal, solo se verifica la validez del formato de dirección.

 ip = InetAddress.getByAddress(new byte[] { (byte)192, (byte)168, (byte)0, (byte)102} ); 

InetAddress.getByName también funciona para la dirección IP.

De JavaDoc

El nombre de host puede ser un nombre de máquina, como “java.sun.com”, o una representación textual de su dirección IP. Si se proporciona una dirección IP literal, solo se verifica la validez del formato de dirección.

La API es bastante fácil de usar.

 // Lookup the dns, if the ip exists. if (!ip.isEmpty()) { InetAddress inetAddress = InetAddress.getByName(ip); dns = inetAddress.getCanonicalHostName(); }