Android 检查IPv6是否可用的最佳方法
检查当前安卓手机上是否提供IPv6的最佳方法是什么 我目前的想法是使用和枚举via,但这似乎太复杂了Android 检查IPv6是否可用的最佳方法,android,ipv6,Android,Ipv6,检查当前安卓手机上是否提供IPv6的最佳方法是什么 我目前的想法是使用和枚举via,但这似乎太复杂了 有更简单的方法吗?如果需要检查所有接口,我不知道还有比使用更简单的方法,但应该没有那么糟糕: for(NetworkInterface netInt: NetworkInterface.getNetworkInterfaces()){ for(InterfaceAddress address: netInt.getInterfaceAddresses()){ if(add
有更简单的方法吗?如果需要检查所有接口,我不知道还有比使用更简单的方法,但应该没有那么糟糕:
for(NetworkInterface netInt: NetworkInterface.getNetworkInterfaces()){
for(InterfaceAddress address: netInt.getInterfaceAddresses()){
if(address.getAddress() instanceof Inet6Address){
// found IPv6 address
// do any other validation of address you may need here
}
}
}
如果知道要检查的地址,可以跳过使用NetworkInterface
,通过调用InetAddress
的静态方法之一检查特定的InetAddress
,并检查该地址是否为Inet6Address布尔isIPV6=false的实例;
boolean isIPV6 = false;
Enumeration<NetworkInterface> networkInterfaces =
NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface ni = networkInterfaces.nextElement();
for (InterfaceAddress addr : ni.getInterfaceAddresses()) {
if (addr.getAddress() instanceof Inet6Address) {
isIPV6 = true;
}
}
}
枚举网络接口=
NetworkInterface.getNetworkInterfaces();
while(networkInterfaces.hasMoreElements()){
NetworkInterface ni=networkInterfaces.nextElement();
对于(InterfaceAddress地址:ni.GetInterfaceAddress()){
if(Inet6Address的addr.getAddress()实例){
isIPV6=真;
}
}
}
这仅在设备当前连接到ipv6网络时有效,对吗?这只会告诉您有ipv6适配器。如果您位于仅IPv4网络下游的NAT64网络上,这将假定您具有IPv6连接,但当您尝试建立IPv6连接时,它将失败。为什么此解决方案比已接受的解决方案更好?您忘记在回答中编写任何文档。NetworkInterface.getNetworkInterfaces()
返回一个枚举,因此您无法对其进行访问,您需要像使用迭代器一样使用它。除此之外,答案基本相同。我的只是汇编-P