2013-08-28 23 views
5

Non capisco, perché il codice sottostante stampa 0.0.9.229 invece di 127.0.0.1. Qualcuno può dirmi, caldo per aggiustarlo?Java. InetAddress.getLocalHost restituisce lo strano IP

String ha = InetAddress.getLocalHost().getHostAddress(); 
System.out.println(ha); 

UPD: codice in esecuzione su Ubuntu

/etc/hosts

127.0.0.1  localhost 
127.0.1.1  2533 

risposta

3

Il problema è che il mio nome host sarà composto solo da numeri e non è stato possibile risolvere. Ho cambiato il mio/etc/hostname con i caratteri nella prima posizione e il problema è risolto.

9

InetAddress.getLocalHost() non fa quello che la maggior parte della gente pensa che lo fa. In realtà restituisce il nome host della macchina e l'indirizzo IP associato a tale nome host. Questo potrebbe essere l'indirizzo utilizzato per connettersi al mondo esterno. Non può Dipende solo da come hai configurato il tuo sistema.

Sul mio windowsbox ottiene il nome della macchina e l'indirizzo IP esterno. Sulla mia macchina Linux restituisce hostname e 127.0.0.1 perché l'ho impostato in/etc/hosts

+0

Sto usando la lib, che contiene questo codice. Sospetto, che ci deve essere qualcosa come 127.0.0.1 o localhost, ma c'è 0.0.9.229, che causa Impossibile legare ulteriormente all'errore URL. Non capisco dove da 0.0.9.229 – shurik2533

+0

So che non sei la risposta selezionata ma questa risposta mi ha salvato un sacco di dolore oggi. Grazie! – durron597

2

Utilizzare NetworkInterface per enumerare le interfacce di rete; InetAddress.getLocalHost() restituisce sempre il loopback. Se si desidera ottenere tutti gli indirizzi IP associati alla propria macchina, utilizzare NetworkInterface quindi si otterrà anche 127.0.0.1.

Enumeration<NetworkInterface> nInterfaces = NetworkInterface.getNetworkInterfaces(); 

    while (nInterfaces.hasMoreElements()) { 
     Enumeration<InetAddress> inetAddresses = nInterfaces.nextElement().getInetAddresses(); 
     while (inetAddresses.hasMoreElements()) { 
      String address = inetAddresses.nextElement().getHostAddress(); 
      System.out.println(address); 
     } 
    } 
Problemi correlati