[英]Decimal formatted IPV6 ip address or extract IPV4 from IPV6
是否有任何JAVA或LINUX方式可提取十进制格式的IPV6 IP地址。 或是否有任何JAVA或LINUX方式将IPV6 ip转换为IPV4格式。
谢谢。 Dnyanesh。
是否有任何JAVA或LINUX方式可提取十进制格式的IPV6 IP地址。
否。IPv6地址始终以十六进制表示。
或是否有任何JAVA或LINUX方式将IPV6 ip转换为IPV4格式。
不,它们是完全不同的地址类型。
好吧,IPv6地址只有16个字节(和一个网络掩码),与IPv4地址只有4个字节一样。 因此,以十进制打印它们肯定是可能的。 但问题是,既然每个人都用十六进制写这些地址,为什么要这样做呢。
尽管在IPv6中有一个特定的地址范围可用于嵌入IPv4地址(而且您可以在自己的基础架构中自由创建新地址),但这显然是不可能的。
如果您真正的问题是“如果我只有IPv4,如何与IPv6主机通信”,那么答案就更加复杂了,涉及在IPv4内建立IPv6流量隧道。 http://www.networkworld.com/news/2010/050610-ipv6-tunnel-basics.html全面介绍了可用的选项。 TLDR摘要:您可能应该使用Teredo对IPv6进行临时访问(Linux客户端: http : //www.remlab.net/miredo/ )。 如果您想连接服务器而无法从提供商那里获得IPv6服务,最好的答案是6to4(以我的经验),但是如今,告诉提供商一起采取行动更为有用。 或更改提供商。
取决于您的意思是摘录。
IPAddress Java库将完成您所要求的部分或全部。 链接中提供了javadoc。 免责声明:我是项目经理。
该库解析IPv4和IPv6。 它允许您生成各种不同格式的字符串,并且您可以调用toNormalizedString(IPStringOptions)方法来生成十进制格式的IPv6字符串,即使IPv6通常为十六进制。
该库允许您使用IPAddress.getEmbeddedIPv4Address()从IPv6地址提取IPv4地址,如下所示:
String str = "1::1";//ipv6 address
IPAddressString addrString = new IPAddressString(str);
try {
IPAddress addr = addrString.toAddress();//parse the ipv6 address
IPAddress addr2 = addr.getEmbeddedIPv4Address()//extract the ipv4 address 0.0.0.1 from the terminating bytes
...
} catch(AddressStringException e) {
//e.getMessage provides validation issue
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.