2012-08-24 70 views
0

到目前爲止,我總是用下面讓我的IP地址:IP地址在Linux上

InetAddress.getLocalHost().getHostAddress() 

以上方法適用於Windows,但在Linux上我總是127.0.1.1爲我的IP地址。

我在做什麼錯?

+0

可能的重複:http://stackoverflow.com/questions/1062041/ip-address-not-obtained-in-java?rq=1 – Baz

回答

4

我在網上找了一些代碼,應該可以解決你的問題:

String hostName = InetAddress.getLocalHost().getHostName(); 

InetAddress addrs[] = InetAddress.getAllByName(hostName); 

String myIp = "UNKNOWN"; 
for (InetAddress addr: addrs) { 
    System.out.println ("addr.getHostAddress() = " + addr.getHostAddress()); 
    System.out.println ("addr.getHostName() = " + addr.getHostName()); 
    System.out.println ("addr.isAnyLocalAddress() = " + addr.isAnyLocalAddress()); 
    System.out.println ("addr.isLinkLocalAddress() = " + addr.isLinkLocalAddress()); 
    System.out.println ("addr.isLoopbackAddress() = " + addr.isLoopbackAddress()); 
    System.out.println ("addr.isMulticastAddress() = " + addr.isMulticastAddress()); 
    System.out.println ("addr.isSiteLocalAddress() = " + addr.isSiteLocalAddress()); 
    System.out.println (""); 

    if (!addr.isLoopbackAddress() && addr.isSiteLocalAddress()) { 
    myIp = addr.getHostAddress(); 
    } 
} 

來源:http://www.exampledepot.com/egs/java.net/Local.html

你的代碼的基本區別是,所有的IP不會忽略檢查。

0

您的應用程序是否使用安全管理器?如果無法連接到您的地址,getLocalHost將返回環回地址。