我正在使用一个使用的库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(使用前将#替换为@)