Java InetAddress.getHostAddress()是否符合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

JDK 1.6中是否兼容ipv6

具体来说,我正在做什么

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。