【发布时间】:2019-05-18 19:55:32
【问题描述】:
我正在尝试在 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 地址,而不是两个。这三个都是正确的。使用哪一个取决于您在做什么。
标签: android networking ipv6