InetAddress.getHostAddress()是否符合ipv6?

JDK 1.6中是否符合InetAddress.getHostAddress() ipv6?

具体来说我在做

InetAddress.getLocalHost().getHostAddress() 

它是否符合ipv6标准? 它对ipv4和v6地址都有效吗?

扩展类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类的代码,它确实做了正确的事情。

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