KC Baltz
KC Baltz

Reputation: 1508

In Java, how can I test for network connectivity without using DNS?

We have a Java application running on a portable device and the JVM we're using (CReMe) appears to have a bug where it caches negative DNS lookups, even when we tell it not to. Thus, when we try to make a connection to our server and the DNS lookup fails because the network connection isn't established yet, the application is stuck because it will never perform the lookup again, even when connectivity is restored.

We've tried testing by opening a Socket to a hard-coded IP address, but obviously there's no guarantee that a given IP address won't change in the future. Can anyone suggest another way to verify that we have network connectivity?

Upvotes: 0

Views: 393

Answers (3)

Svish
Svish

Reputation: 158051

Maybe you can try to use the DNS servers of Google? Doubt they will ever change, and pretty sure they are usually up :)

8.8.8.8
8.8.4.4

Upvotes: 0

Jay
Jay

Reputation: 9582

You could have a list of IPs and try to open a connection. They could be IPs of machines on your LAN or they could be Google or Facebook's IP.

If you can't connect to any IP on the list, you can assume the network is down.

When the network is up, you can update the list with a DNS lookup.

Upvotes: 1

pingw33n
pingw33n

Reputation: 12510

You could try custom DNS client like dnsjava.

Upvotes: 1

Related Questions