簡體   English   中英

如何獲得正確的IPv6 IP地址?

[英]How to get correct IPv6 Ip address?

我正在嘗試在android中顯示已連接網絡的ip地址。 我正在使用以下代碼。 但是它返回2個IPv6 ip地址。 如何從中找到正確的IP地址?

我正在使用以下代碼:

List<LinkAddress> linkAddresses = connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getLinkAddresses();
        for (LinkAddress linkAddress : linkAddresses) {
            Log.i("","LinkAddress getAddress "+linkAddress.getAddress() + "");
            Log.i("","Is IPV6 " + (linkAddress.getAddress() instanceof Inet6Address) +"");
            Log.i("","Is IPV4 " + (linkAddress.getAddress() instanceof Inet4Address) +"");
            Log.i("","Is isLinkLocalAddress " + (linkAddress.getAddress().isLinkLocalAddress()) +"");
            Log.i("","Is not isLoopbackAddress " + (!linkAddress.getAddress().isLoopbackAddress()) +"");
        }

現在我得到4個IP地址。

LinkAddress getAddress /fe80::2d0:caff:fe00:5ad6
LinkAddress getAddress /2401:4900:2305:14e:2d0:caff:fe00:5ad6
LinkAddress getAddress /2401:4900:2305:14e:28e2:5192:e38f:3e9
LinkAddress getAddress /192.168.43.176

我可以確定fe80是“鏈接本地IP”地址和192。是IPv4地址。 但是我很困惑從中識別IPV6地址。 請幫助我找出IPv6 ip地址。

兩個IPv6地址均有效。 每個接口有多個地址是正常的。 兩者都在同一個子網(2401:4900:2305:14e :: // 64)中。 當您查看接口ID(地址的后半部分)時,您會看到中間有..ff:fe..。 這表明該地址可能是從接口的MAC地址派生的。 另一個地址是一個臨時地址,它將隨着時間的推移而變化,以保護用戶的隱私。

但簡而言之:兩個地址都完全有效且可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM