如何检查是否使用主机名或IP地址创建了InetAddress?

时间:2013-06-10 17:09:58

标签: java dns inetaddress

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

1 个答案:

答案 0 :(得分:3)

是的,你可以。

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版本。