我不明白,为什么下面的代码打印 0.0.9.229 而不是 127.0.0.1。谁能告诉我,热修复?
String ha = InetAddress.getLocalHost().getHostAddress();
System.out.println(ha);
UPD:在 Ubuntu 上运行的代码
/etc/hosts
127.0.0.1 localhost
127.0.1.1 2533
我不明白,为什么下面的代码打印 0.0.9.229 而不是 127.0.0.1。谁能告诉我,热修复?
String ha = InetAddress.getLocalHost().getHostAddress();
System.out.println(ha);
UPD:在 Ubuntu 上运行的代码
/etc/hosts
127.0.0.1 localhost
127.0.1.1 2533
InetAddress.getLocalHost()
不像大多数人认为的那样做。它实际上返回机器的主机名,以及与该主机名关联的 IP 地址。这可能是用于连接外部世界的地址。它可能不会。这仅取决于您如何配置系统。
在我的 windowsbox 上,它获取机器名称和外部 IP 地址。在我的 linux 机器上,它返回主机名和 127.0.0.1,因为我在 /etc/hosts 中设置了它
问题是我的主机名将仅包含数字并且无法解析。我用第一个位置的字符更改我的 /etc/hostname 并且问题已经解决。
用于NetworkInterface
枚举网络接口;InetAddress.getLocalHost()
总是返回环回。如果你想获得与你的机器使用相关的所有 IP, NetworkInterface
那么你也会得到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);
}
}