0

我想知道是否在构造时使用主机名或 IP 地址初始化 InetAddress 对象。有没有办法在java中检查?

4

1 回答 1

4

是的你可以。

返回以下格式的InetAddress.toString()字符串表示形式:host-name/IP address. 如果主机名未知(在使用 IP 地址创建实例时发生),则第一部分为空。

以下代码片段:

    System.out.println(InetAddress.getByName("localhost").toString());
    System.out.println(InetAddress.getByName("127.0.0.1").toString());
    System.out.println(InetAddress.getByName("www.google.com").toString());
    System.out.println(InetAddress.getByName("173.194.113.145").toString());

打印此输出:

localhost/127.0.0.1
/127.0.0.1
www.google.com/173.194.113.144
/173.194.113.145

所以,你可以这样说:

public static boolean isCreatedFromIp(InetAddress addr) {
    return addr.toString().startsWith("/");
}

编辑:我没有用 IPv6 对此进行检查,但是我相信存在类似的解决方案,因为toString()实施不依赖于 IP 版本。

于 2013-06-10T17:23:07.267 回答