2012-12-14 98 views
0

是否有任何JAVA或LINUX方法來提取十進制格式的IPV6 IP地址。 或 是否有任何JAVA或LINUX的方式來隱藏IPV6 IP到IPV4格式。十進制格式化的IPV6 IP地址或從IPV6中提取IPV4

謝謝。 Dnyanesh。

+2

你必須瞭解IPv6到IPv4映射。有一看[它] [1] [1]:http://stackoverflow.com/questions/2786632/how-can-i-convert-ipv6-address-to-ipv4-address –

回答

4

是否有任何JAVA或LINUX的方式來提取十進制格式的IPV6 IP地址。

否。IPv6地址總是以十六進制顯示。

或者是否有任何JAVA或LINUX的方式來隱藏IPV6 IP到IPV4格式。

不,他們是完全不同的地址類型。

+0

儘管技術上正確,但您可以在ipv6':: 00:255.255.255.255'中嵌入十進制ipv4地址([試一試](http://www.v6decode.com/#address=%3A%3A00%3A255.255.255。 255)) – Mottie

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(以我的經驗),但是現在告訴你的提供者一起採取行動更有用。或更改提供商。

0

取決於你的意思是提取。

The IPAddress Java library會做你所要求的一些或全部。 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 
    } 
相關問題