【发布时间】:2012-08-19 18:44:26
【问题描述】:
到目前为止,我一直使用以下方法来获取我的 IP 地址:
InetAddress.getLocalHost().getHostAddress()
上述方法适用于 Windows,但在 linux 上,我总是将127.0.1.1 作为我的 IP 地址。
我做错了什么?
【问题讨论】:
标签: java windows linux ip-address inetaddress
到目前为止,我一直使用以下方法来获取我的 IP 地址:
InetAddress.getLocalHost().getHostAddress()
上述方法适用于 Windows,但在 linux 上,我总是将127.0.1.1 作为我的 IP 地址。
我做错了什么?
【问题讨论】:
标签: java windows linux ip-address inetaddress
我在网上找到了一些可以解决你问题的代码:
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 无法连接到您的地址,它将返回环回地址。
【讨论】: