我使用,使用java.net.InetAddress.getLocalHost().getHostAddress()
让我的本地IP地址库。但是,这总是会返回我的计算机上的IPv6地址(Gentoo Linux,JDK 1.6.0_37)。该地址进一步用于不支持IPv6地址的情况下,从而失败。力InetAddress.getHostAddress()返回IPv4地址
是否有某种方式来强制getHostAddress()
(例如,通过一个参数来JVM)返回一个IPv4地址?
我使用,使用java.net.InetAddress.getLocalHost().getHostAddress()
让我的本地IP地址库。但是,这总是会返回我的计算机上的IPv6地址(Gentoo Linux,JDK 1.6.0_37)。该地址进一步用于不支持IPv6地址的情况下,从而失败。力InetAddress.getHostAddress()返回IPv4地址
是否有某种方式来强制getHostAddress()
(例如,通过一个参数来JVM)返回一个IPv4地址?
你可以将其设置为缴费时使用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。
如果返回的地址是ipv6,测试如何处理异常? – Hosni
[获取Java中您的IP地址(http://stackoverflow.com/a/9482369/1135954)可能是有用的。 – mtk
谢谢,但我想避免更改我的源代码,因为调用是我不希望改变库中。 – Bob