到目前爲止,我總是用下面讓我的IP地址:IP地址在Linux上
InetAddress.getLocalHost().getHostAddress()
以上方法適用於Windows,但在Linux上我總是127.0.1.1
爲我的IP地址。
我在做什麼錯?
到目前爲止,我總是用下面讓我的IP地址:IP地址在Linux上
InetAddress.getLocalHost().getHostAddress()
以上方法適用於Windows,但在Linux上我總是127.0.1.1
爲我的IP地址。
我在做什麼錯?
我在網上找了一些代碼,應該可以解決你的問題:
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不會忽略檢查。
您的應用程序是否使用安全管理器?如果無法連接到您的地址,getLocalHost將返回環回地址。
可能的重複:http://stackoverflow.com/questions/1062041/ip-address-not-obtained-in-java?rq=1 – Baz