【问题标题】:InetAddress.getHostAddress() ipv6 compliant?InetAddress.getHostAddress() ipv6 兼容?
【发布时间】:2011-08-02 07:07:09
【问题描述】:

InetAddress.getHostAddress() ipv6 在 JDK 1.6 中是否兼容?

特别是我正在做的事情

InetAddress.getLocalHost().getHostAddress()

它是否符合 ipv6 标准?它适用于 ipv4 和 v6 地址吗?

【问题讨论】:

  • 结论是它确实是 ipv6 兼容的。
  • 您仍然需要接受答案。 :-)
  • 您能否批准我的编辑 - 然后我会接受答案。就目前而言,人们不确定答案是肯定的还是否定的。
  • 我不能。社区拒绝了它,他们有正当理由拒绝它。
  • 请注意,问题不是关于 Inet6Address 而是关于接口 InetAddress。

标签: java ipv6


【解决方案1】:

扩展类 java.net.Inet6Address 符合 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.getLocalHost().getHostAddress() 那么安全吗?请也看看我的编辑。
  • @Fakrudeen,我想您必须执行if (InetAddress.getLocalHost() instanceof Inet6Address) 来查看它是否返回Inet6Address 或阅读InetAddress 源代码。
  • @Elite,我看了源码。根据是否支持 IPv6,它似乎在做正确的事情。但我只是想与社区确认。 InetAddress 静态块: if (isIPv6Supported()) { o = InetAddress.loadImpl("Inet6AddressImpl"); } else { o = InetAddress.loadImpl("Inet4AddressImpl"); } 返回 (InetAddressImpl)o; }
  • @Fakrudeen,你去! :-) 你的研究做得很好。
【解决方案2】:

下面是根据上面的分析来测试的代码:

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();
    }

}

【讨论】:

    【解决方案3】:

    我查看了 InetAddress 类的代码,它确实在做正确的事情。

      if (isIPv6Supported()) { 
          o = InetAddress.loadImpl("Inet6AddressImpl"); 
      } 
      else { 
          o = InetAddress.loadImpl("Inet4AddressImpl"); } 
          return (InetAddressImpl)o; 
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      • 2016-10-08
      • 2012-03-08
      相关资源
      最近更新 更多