到目前为止,我总是使用以下方法来获取我的 IP 地址:
InetAddress.getLocalHost().getHostAddress()
上述方法适用于 Windows,但在 linux 上我总是得到127.0.1.1
我的 IP 地址。
我究竟做错了什么?
到目前为止,我总是使用以下方法来获取我的 IP 地址:
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 无法连接到您的地址,它将返回环回地址。