Creazione dell’object InetAddress in Java

Sto provando a convertire un indirizzo specificato da un numero IP o un nome, sia in String (cioè localhost o 127.0.0.1 ), in un object InetAdress . Non ci sono costruttori ma metodi statici che restituiscono un indirizzo Inet . Quindi se ottengo un nome host non è un problema, ma cosa succede se ottengo il numero IP? C’è un metodo che ottiene byte [] ma non sono sicuro di come possa aiutarmi. Tutti gli altri metodi ottengono il nome host.

Documentazione API InetAddress

Dovresti essere in grado di usare getByName o getByAddress .

Il nome host può essere un nome macchina, come “java.sun.com” o una rappresentazione testuale del suo indirizzo IP

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

Il metodo che accetta un array di byte può essere usato in questo modo:

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

Dall’API per InetAddress

Il nome host può essere un nome macchina, come “java.sun.com” o una rappresentazione testuale del suo indirizzo IP. Se viene fornito un indirizzo IP letterale, viene verificata solo la validità del formato dell’indirizzo.

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

InetAddress.getByName funziona anche per l’indirizzo IP.

Da JavaDoc

Il nome host può essere un nome macchina, come “java.sun.com” o una rappresentazione testuale del suo indirizzo IP. Se viene fornito un indirizzo IP letterale, viene verificata solo la validità del formato dell’indirizzo.

L’API è abbastanza facile da usare.

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