¿Dirección IP a Nombre de host en Java?


Mi archivo hosts (C:\WINDOWS\system32\drivers\etc\hosts) tiene un montón de direcciones IP para asignar nombres de host:

# Switches
192.168.200.254       sw-con-ctrl
192.168.201.253    sw-con-ctrl-2
192.168.201.254       sw-con-ctrl-1
# 192.168.188.1       sw-con-ctrl-blk-1
# 192.168.189.1       sw-con-ctrl-red
192.168.190.62        access-console

# Routers
192.168.21.1          rtr1
192.168.22.1          rtr2

Estoy tratando de encontrar una manera de convertir de una dirección IP al nombre de HOST mediante programación a través de las API de Java.

Pseudocódigo:

IPAddress ip = new IPAddress("192.168.190.62");
String host = ip.getHost();
System.out.println(host);  //prints "access-console"
Author: systemoutprintln, 2010-07-30

4 answers

Probé el código de aquí y funciona. A saber:

  InetAddress addr = InetAddress.getByName("192.168.190.62");
  String host = addr.getHostName();
  System.out.println(host);
 44
Author: user85509,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-30 13:50:49

Hay métodos en la InetAddress clase para eso. Creo que tú también querrás getHostName o getCanonicalHostName, dependiendo de su necesidad.

 2
Author: Bill the Lizard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-27 07:30:02

Puedes probar con este código.Creo que es útil

import java.net.InetAddress;
import java.net.UnknownHostException;

public class IpTest {
    public static void main(String args[]) throws UnknownHostException {  
        InetAddress addr = InetAddress.getLocalHost();
        String ipAddress = addr.getHostAddress();    
        System.out.println("IP address of localhost : " + ipAddress);
        String hostname = addr.getHostName();
        System.out.println("Name of hostname : " + hostname);
    }
}
 2
Author: madhu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-10 14:17:29

Esto funciona ya que los javadocs solo dicen local cuando no se necesita una búsqueda inversa: Si se proporciona una dirección IP literal, solo se comprueba la validez del formato de dirección.

Si alguien conoce una manera sin usar tarros de terceros para hacer la búsqueda remota...

 1
Author: RudeUrm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-03 15:44:44