繁体   English   中英

十进制格式的IPV6 IP地址或从IPV6提取IPV4

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM