gpt4 book ai didi

java - 如何检查 InetAddress 是使用主机名还是 IP 地址创建的?

转载 作者:行者123 更新时间:2023-12-01 23:46:02 24 4
gpt4 key购买 nike

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

最佳答案

是的,可以。

InetAddress.toString() 返回以下格式的字符串表示形式:主机名/IP 地址。如果主机名未知(使用 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 版本。

关于java - 如何检查 InetAddress 是使用主机名还是 IP 地址创建的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17029267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com