Java InetAddress.getHostAddress()是否符合ipv6?
JDK 1.6中是否兼容ipv6 具体来说,我正在做什么Java InetAddress.getHostAddress()是否符合ipv6?,java,ipv6,Java,Ipv6,JDK 1.6中是否兼容ipv6 具体来说,我正在做什么 InetAddress.getLocalHost().getHostAddress() 它兼容ipv6吗?它是否同时适用于ipv4和v6地址?扩展类与IPv6兼容 JavaDoc: 此类表示Internet协议版本6(IPv6)地址。 由RFC 2373定义:IP版本6寻址体系结构 基本上,如果执行InetAddress.getByName()或InetAddress.getByAddress()操作,则这些方法将识别名称或地址是IPv
InetAddress.getLocalHost().getHostAddress()
它兼容ipv6吗?它是否同时适用于ipv4和v6地址?扩展类与IPv6兼容
JavaDoc:
此类表示Internet协议版本6(IPv6)地址。
由RFC 2373定义:IP版本6寻址体系结构
基本上,如果执行InetAddress.getByName()
或InetAddress.getByAddress()
操作,则这些方法将识别名称或地址是IPv4还是IPv6名称/地址,并分别返回扩展的Inet4Address
/Inet6Address
对于
InetAddress.getHostAddress()
,它返回一个null。您需要java.net.Inet6Address.getHostAddress()
来返回IPv6字符串可表示的地址。我查看了InetAddress类的代码,它确实做了正确的事情
if (isIPv6Supported()) {
o = InetAddress.loadImpl("Inet6AddressImpl");
}
else {
o = InetAddress.loadImpl("Inet4AddressImpl"); }
return (InetAddressImpl)o;
}
以下是基于上述分析测试的代码:
public static void main(String[] args) {
// TODO Auto-generated method stub
InetAddress localIP;
try {
localIP = InetAddress.getLocalHost();
if(localIP instanceof Inet6Address){
System.out.println("IPV6");
} else if (localIP instanceof Inet4Address) {
System.out.println("IPV4");
}
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
谢谢-那么InetAddress.getLocalHost().getHostAddress()安全吗?请同时查看我的编辑。@Fakrudeen,我想您必须执行
if(InetAddress.getLocalHost()instanceof Inet6Address)
以查看它是否返回Inet6Address
或阅读InetAddress
源代码。@Elite,我查看了源代码。它似乎在做正确的事情,这取决于是否支持IPv6。但我只是想和社区确认一下。InetAddress静态块:if(isIPv6Supported()){o=InetAddress.loadImpl(“Inet6AAddressImpl”);}else{o=InetAddress.loadImpl(“Inet4AddressImpl”);}返回(InetAddressImpl)o;}@法克鲁登,你来了!:-)您的研究做得很好。结论是它确实符合ipv6。您仍然需要接受答案。:-)你能批准我的编辑吗?然后我会接受答案。现在,人们不确定答案是肯定的还是否定的。我不能。社区拒绝了它,他们有充分的理由拒绝它。请注意,问题不是关于Inet6Address,而是关于接口InetAddress。