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