强制 InetAddress.getHostAddress() 返回 IPv4 地址

2024-01-22

我正在使用一个使用的库java.net.InetAddress.getLocalHost().getHostAddress()获取我的本地IP地址。然而,这总是在我的计算机上返回 IPv6 地址(Gentoo Linux,JDK 1.6.0_37)。该地址进一步在不支持 IPv6 地址的上下文中使用,因此失败。

有什么办法可以强制getHostAddress()返回 IPv4 地址(例如通过 JVM 的参数)?


您可以将其设置为使用 IPv4(如果可用)。当然,IPv6 地址比 IPv4 地址多很多,因此并不能保证始终获得 IPv4 地址。

java.net.preferIPv4Stack = true

可以设置为:

System.setProperty("java.net.preferIPv4Stack" , "true");

或者作为命令行参数:

-Djava.net.preferIPv4Stack=true

不过,无论如何,首选 IPv4 地址通常是默认行为。

如果您需要确保永远不会获得 IPv6 地址,我认为您需要检查java.net.InetAddress.getLocalHost().getHostAddress()不返回Inet6Address,如果确实如此,则处理它(我想这是一个例外)。

或者,当然,更好的方法是:修复代码以支持 IPv6。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强制 InetAddress.getHostAddress() 返回 IPv4 地址 的相关文章

随机推荐