2014-12-02 56 views
1

嗨,大家好,我經歷了很多編碼上線讓我的Android手機的IP地址了 他們大多是與獲取IP地址,但在xxx.xxx.xxx.xxx格式

if (!inetAddress.isLoopbackAddress()) 
       { return inetAddress.getHostAddress().toString();  } 
結束

如何過我得到的東西看起來是這樣的: - 「FE80 :: A00:27FF:FE37:28b5%的eth1」 奇怪,因爲我期待像xxx.xxx.xxx.xxx

一些能幫助一個我明白這是什麼?

+0

見問題http://stackoverflow.com/questions/11015912/how-do-i-get-ip-address- in-ipv4-format – maveroid 2014-12-02 07:49:32

+0

是的。這是有道理的。 1最後一件事。 – Wadia 2014-12-02 07:58:22

回答

2

這是一個IPv6地址。此外,由於它始於fe80::,您知道它也是link-local IPv6 address,因此不能用於本地網絡之外的通信。 (在這種情況下,eth1,因爲這是%後結束指定的範圍 - 但是請注意,使用IPv6地址時使用%識別範圍並不總是有效)

+0

太棒了!現在這就是我所做的 - 我得到了手機(服務器)的Ipv6地址並將其放置在我的模擬器(客戶端)中,但未能連接。然後,我做了舊時尚的方式xxx.xxx.xxx.xxx格式,它連接!因此,我可以通過任何方式直接獲取舊格式,因爲此Ipv6不能以任何方式工作? – Wadia 2014-12-02 09:07:16

+0

@Wadia,有許多可能的方法來過濾不需要的IPv6地址(請參閱此問題的其他答案)。我看到的一種方法是檢查地址中是否存在「:」。如果是這樣,它是一個IPv6地址。 – mpontillo 2014-12-02 14:25:34

1

嘗試java.net.Inet4Address代替。

1

它返回的IPV6地址。

檢查返回結果前是否爲其IPV4地址。

if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) { 
    return inetAddress.getHostAddress().toString(); 
} 

希望這會有所幫助。

0

這將以等寬字體顯示。前四個空格 將被剝離,但所有其他空格將被保留。

Markdown and HTML are turned off in code blocks: 
<i>This is not italic</i>, and [this is not a link](http://example.com) 

要創建不是一個塊,而是內嵌碼跨度,使用反引號:

$角色僅僅是window.jQuery一個快捷方式。 如果要在列表中設置預先格式化的塊,請按八個空格縮進:

  1. 這是正常文本。
  2. 原來是這樣,但現在如下代碼塊:

    Skip a line and indent eight spaces. 
    That's four spaces for the list 
    and four to trigger the code block.