如何从 InetAddress.getLocalHost() 获取 IPv6

How to get IPv6 from InetAddress.getLocalHost()

我有一台同时支持 IPv4 和 IPv6 的双栈 Linux 机器。 现在我的问题是,每当我尝试调用 InetAddress.getLocalHost() 时,它总是给我 IPv4。

我可以在 InetAddress.getLocalHost() 响应中同时使用 IPv4 和 IPv6 吗? 如果不是,那么我将如何从 InetAddress.getLocalHost().

获取 IPv6 地址

我在这里回答了类似的问题:How to fetch both IPv4 and IPv6 on dual stack OS

在 Linux 中,InetAddress.getLocalHost() 将查找主机名,然后 return DNS 分配给该主机名的第一个 IP 地址。如果您在文件 /etc/hosts 中有该主机名,它将获得该主机名在该文件中的第一个 IP 地址。

您可以使用 link 中的代码(How to fetch both IPv4 and IPv6 on dual stack OS),然后使用@Rafiq 指示的 link 中的函数 getIPv6Addresses(Return Java) 中的 IPv6 以仅获取 IPv6 地址。

希望对您有所帮助。