问题
I'm trying to to get IPv6 addresses from a hostname on an Android device.
My device is Nexus 7 and 6.0.1 version.
Below is the API I used:
InetAddress[] inets = InetAddress.getAllByName("hostname.com");
InetAddress address = InetAddress.getByName("hostname.com");
Those two API calls work fine for IPv4, but do not work for IPv6.
It shows the below errors:
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)
I also tried nslookup
in Android terminal, and it works fine with IPv6:
Is there any way I can get an IPv6 address from a hostname using Android APIs?
UPDATE: I have used the dnsjava library to solve my problem.
Please refer to this related discuss:
Return IPv6 in Java
来源:https://stackoverflow.com/questions/41560351/android-getting-ipv6-address-from-hostname