InetAddress.getHostAddress()是否符合ipv6?

Fak*_*een 6 java ipv6

InetAddress.getHostAddress()的IPv6兼容的JDK 1.6?

具体而言我正在做

InetAddress.getLocalHost().getHostAddress()
Run Code Online (Sandbox Code Playgroud)

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

Buh*_*ndi 6

扩展类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字符串可表示的地址.


Fak*_*een 4

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

  if (isIPv6Supported()) { 
      o = InetAddress.loadImpl("Inet6AddressImpl"); 
  } 
  else { 
      o = InetAddress.loadImpl("Inet4AddressImpl"); } 
      return (InetAddressImpl)o; 
  }
Run Code Online (Sandbox Code Playgroud)