我想知道如果在构造时使用主机名或IP地址初始化InetAddress对象。有没有办法在java中检查?
答案 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版本。