2012-05-11 17 views
9

Nella mia applicazione java se l'utente inserisce l'IP, è necessario visualizzare il nome host, se viene fornito il nome host, è necessario visualizzare l'IP dell'host.conversione di un indirizzo IP nel nome host

Ad esempio, se l'utente immette un indirizzo IP come 173.194.36.37, l'applicazione deve visualizzare google.com e viceversa.

Esistono programmi di utilità disponibili per eseguire questa operazione?

+0

si sa che un numero IP può avere diversi nomi di host? ad esempio 127.0.0.1 ha * both * localhost e localhost.localdomain – vidstige

+0

@vidstige Non con reverse DNS. Qui l'IP è mappato esattamente a un nome host, il cosiddetto "nome host canonico". – glglgl

+1

non puoi ottenere risultati unici vedi http://aruljohn.com/ip2hostname.html per 173.194.36.37 vedi bom04s02-in-f5.1e100.net non google.com! – SjB

risposta

17

Se si esegue la codifica in Java, provare a utilizzare InetAddress

InetAddress addr = InetAddress.getByName("173.194.36.37"); 
String host = addr.getHostName(); 
System.out.println(host); 
+4

Ovviamente, non dimenticare la gestione delle eccezioni per UnknownHostException. – ccKep

2

Quello che stai cercando è qualcosa chiamato DNS. This project sembra essere quello che stai cercando.

+0

Non c'è bisogno di introdurre librerie di terze parti se c'è 'InetAddress.getHostName()'. –

+2

@PhilippReichart La domanda dice "Ci sono delle utilità disponibili", quindi penso perché non le librerie di terze parti open-source. –

+0

@PrakashK Semplicità. Perché portare in * oltre 100 * classi quando tutto ciò che si desidera può essere raggiunto chiamando un metodo esistente? Molto meno parti mobili, molto meno da sbagliare. –

0

In termini di nome di dominio, non ci sono costruiti in programmi di utilità, n. È possibile possibile ottenere il nome di un host (ma non il nome di dominio) utilizzando getCanonicalHostName() su InetAddress - che dovrebbe funzionare. La migliore risposta qui collegata al progetto DNS Java, che ti darà il nome del dominio.

codice di esempio per connettersi, e ottenere il nome dell'host da uno dei server di Google è il seguente:

public class GetHostName { 
public static void main(String[] args) throws Exception { 
    InetAddress address = InetAddress.getByAddress(new byte[]{74, 125,(byte) 227, 7}); 
    System.out.println(address.getCanonicalHostName()); 
} 
} 
2

Le SomeKittens di progetti di cui si presenta come un server DNS completo scritto in Java, che potrebbe essere più del necessario. Date un'occhiata a java.net.InetAddress:

java.net.InetAddress.getByName("example.com").getHostAddress(); 
+0

Per Google.com questo codice mi dà "74.125.237.100" come risultato. – Jon

+0

E questo è corretto, giusto? Se vado a http://74.125.237.100/ finisco su google.com. – Brian

+0

No. L'OP ha chiesto qualcosa che ti avrebbe dato il nome di dominio dato un indirizzo IP. Il codice sopra fornisce il contrario completo: un indirizzo IP con un nome di dominio. – Jon

Problemi correlati