I am trying to figure out how to tell if a particular ipaddress is available in my android app during debugging ( I haven't tried this on an actual device ).
From reading it appears that InetAddress.isReachable should do this for me.
Initially I thought that I could code something like:
InetAddress address = InetAddress.getByAddress( new byte[] { (byte) 192, (byte) 168, (byte) 254, (byte) 10 ); success = address.isReachable( 3000 );
This returns false even though I am reasonably sure it is a reachable address.
I found that if I changed this to 127, 0, 0, 1 it returned success.
My next attempt was same code, but I used the address I got from a ping of www.google.com ( 72.167.164.64 as of this writing ). No success.
So then I tried a further example:
int timeout = 2000;
InetAddress[] addresses = InetAddress.getAllByName("www.google.com");
for (InetAddress address : addresses)
{
if ( address.isReachable(timeout))
{
success = true; // just set a break point here
}
}
I am relatively new to Java and Android so I suspect I am missing something, but I can't find anything that would indicate what that is.
seems that isReachable() never worked well on Android b/c it tries to use ICMP, that usually needs a root privileges, and then it tries to establish connection to port 7, that's usually have no running services on modern systems.
you'd better check connectivity with establishing TCP connection to ports you know should be open.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With