java - 如何确定网络连接在java中可用?我想获取有关网络连接的信息。如果可用,我将连接到网络以获取数据,否则我将使用本地数据库。
有什么解决办法吗?
java - 如何确定网络连接在java中可用?我想获取有关网络连接的信息。如果可用,我将连接到网络以获取数据,否则我将使用本地数据库。
有什么解决办法吗?
如您所说,尝试连接网络。如果失败,重复例如 3 次。如果仍然失败,请使用本地数据库。您不必另外 ping 任何东西。
为简单起见,您可以使用Jodd HTTP库,例如:
try {
HttpRequest.get("http://stackoverflow.com").send();
return true;
} catch (Exception ex) {
return false;
}
如@igor说:“尝试连接网络,如你所说。如果失败,重复例如3次。如果仍然失败,使用本地数据库。你不必额外ping任何东西。“
例如:
public class InternetConnection {
/* use at least one reliable host, in most cases you will want
to use the one you're working with later */
private static final String CHECK_URL = "http://www.t-online.de/";
public static InternetConnectionState isAvailable() {
try {
URL url = new URL(InternetConnection.CHECK_URL);
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
Object objData = urlConnection.getContent();
} catch(UnknownHostException exception) {
return new InternetConnectionState(false);
} catch(IOException exception) {
return new InternetConnectionState(false);
}
return new InternetConnectionState(true);
}
}
您可以为此使用java.net.NetworkInterface,这是一个简单的示例,没有如何做到这一点:
public boolean isConnectedToNetwork() {
Enumeration<NetworkInterface> interfaceEnumeration = NetworkInterface.getNetworkInterfaces();
while (interfaceEnumeration.hasMoreElements()) {
NetworkInterface each = interfaceEnumeration.nextElement();
if (!each.isLoopback() && each.isUp()) {
return true;
}
}
return false;
}
请注意,您必须检查它是否不是环回接口。