gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 01:35:52 24 4
gpt4 key购买 nike

我正在使用一个库,该库使用 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,如果有则处理它(我想是个异常(exception))。

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

关于java - 强制 InetAddress.getHostAddress() 返回 IPv4 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14282608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com