我试图从Android设备上的主机名获取IPv6地址。
我的设备是Nexus 7和6.0.1版本。
以下是我使用的API:
InetAddress[] inets = InetAddress.getAllByName("hostname.com");
InetAddress address = InetAddress.getByName("hostname.com");
这两个API调用适用于IPv4,但不适用于IPv6。
显示以下错误:
01-10 10:04:18.945: W/System.err(474): java.net.UnknownHostException: Unable to resolve host "106.bmc.com: No address associated with hostname 01-10 10:04:18.945: W/System.err(474): at java.net.InetAddress.lookupHostByName(InetAddress.java:470) 01-10 10:04:18.945: W/System.err(474): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252) 01-10 10:04:18.945: W/System.err(474): at java.net.InetAddress.getByName(InetAddress.java:305) 01-10 10:04:18.946: W/System.err(474): Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname) 01-10 10:04:18.946: W/System.err(474): at libcore.io.Posix.android_getaddrinfo(Native Method) 01-10 10:04:18.946: W/System.err(474): at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55) 01-10 10:04:18.946: W/System.err(474): at java.net.InetAddress.lookupHostByName(InetAddress.java:451)
我在Android终端中也尝试了nslookup
,它适用于IPv6:
有什么办法可以使用Android API从主机名中获取IPv6地址?
更新:我使用了dnsjava库来解决我的问题。
请参阅此相关讨论: