以下内容始终打印第一个返回的IPv4地址,而不是第一个IPv6地址 虽然我明确使用了Inet6Adress而不是InetAddress。这是我使用的OpenJDK 1.7.0中的错误吗?
InetAddress ipv6 = Inet6Address.getByName("www.google.com");
我应该如何为给定的主机名获得一个IPv6地址(如果不存在则为NULL)?
我不想更改IPv4和IPv6之间的解析程序首选项,在这种情况下,我真的想看看是否存在至少一个IPv6地址。
通过迭代InetAddress.getAllByName()的所有结果并检查任何“instanceof Inet6Address”可能是可行的,但这看起来不像所谓的方法。
答案 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