1

是否有任何 JAVA 或 LINUX 方法来提取十进制格式的 IPV6 ip 地址。或者是否有任何 JAVA 或 LINUX 方式将 IPV6 ip 转换为 IPV4 格式。

谢谢。德尼亚内什。

4

3 回答 3

4

是否有任何 JAVA 或 LINUX 方法来提取十进制格式的 IPV6 ip 地址。

不可以。IPv6 地址始终以十六进制显示。

或者是否有任何 JAVA 或 LINUX 方式将 IPV6 ip 转换为 IPV4 格式。

不,它们是完全不同的地址类型。

于 2012-12-14T08:19:02.360 回答
1

好吧,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(根据我的经验),但现在告诉您的提供商一起行动会更有用。或者更换供应商。

于 2012-12-17T11:50:48.323 回答
0

取决于您所说的提取物是什么意思。

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
    }
于 2017-12-13T18:46:04.097 回答