Java的。 InetAddress.getLocalHost返回奇怪的IP

时间:2013-08-28 13:06:26

标签: java ip localhost host inetaddress

我不明白,为什么下面的代码打印0.0.9.229而不是127.0.0.1。任何人都能告诉我,热衷于解决这个问题吗?

String ha = InetAddress.getLocalHost().getHostAddress();
System.out.println(ha);

UPD: 代码在Ubuntu上运行

的/ etc /主机

127.0.0.1       localhost
127.0.1.1       2533

3 个答案:

答案 0 :(得分:10)

InetAddress.getLocalHost()并没有像大多数人认为的那样做。它实际上返回了机器的主机名,以及与该主机名关联的IP地址。这可能是用于连接外部世界的地址。它可能不会。这取决于您如何配置系统。

在我的Windowsbox上,它获取了机器名称和外部IP地址。在我的linux机器上它返回主机名和127.0.0.1因为我在/ etc / hosts

中设置了它

答案 1 :(得分:3)

问题是我的主机名只包含数字而无法解析。 我在第一个位置用字符更改/ etc / hostname,问题解决了。

答案 2 :(得分:2)

使用NetworkInterface枚举网络接口; InetAddress.getLocalHost()始终返回环回。如果您想要使用NetworkInterface获取与您的计算机相关联的所有IP,那么您也会获得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);
        }
    }