Inet6Address.getByName()确实返回(现有)IPv6但只返回IPv4地址?

时间:2014-01-09 15:49:43

标签: java ipv6

以下内容始终打印第一个返回的IPv4地址,而不是第一个IPv6地址 虽然我明确使用了Inet6Adress而不是InetAddress。这是我使用的OpenJDK 1.7.0中的错误吗?

InetAddress ipv6 = Inet6Address.getByName("www.google.com");

我应该如何为给定的主机名获得一个IPv6地址(如果不存在则为NULL)?

我不想更改IPv4和IPv6之间的解析程序首选项,在这种情况下,我真的想看看是否存在至少一个IPv6地址。

通过迭代InetAddress.getAllByName()的所有结果并检查任何“instanceof Inet6Address”可能是可行的,但这看起来不像所谓的方法。

1 个答案:

答案 0 :(得分:0)

刚刚找到这个answer

我正在以文本方式复制用户Pr0gr4mm3r的答案

java.net.Inet6Address不会覆盖getByName()
所以它将始终返回特定的IPv4地址, 除非您的参数本身是有效的IPv6-Address形式,否则此方法将返回Inet6Address-Object。

例如:
getByName("stackoverflow.com") - > Inet4Address
getByName("2001:0db8:85a3:08d3:1319:8a2e:0370:7344") - >是Inet6Address