可能重复:
如何检查互联网连接出现在java吗?
我想看看是否有人具有检测,如果使用Java时,有互联网连接的简单方法。 目前的应用中使用“的InternetGetConnectedState”方法在WinInit DLL适用于Windows,但我的应用程序需要为MAC操作跨平台,这样将无法工作。 我不知道JNI在所有要么在Java中使用的DLL,并成为令人沮丧的快。
只有我能想到的办法都特林打开一个URL连接到一个网站,如果失败,返回false。 我的另一种方式是在下面的,但我不知道这是否是总体稳定。 如果我拔掉我的网线我做尝试创建的InetAddress时得到一个UnknownHostException。 否则,如果连接了电缆,我得到一个有效的InetAddress对象。 我没有测试在Mac下面的代码呢。
感谢您的任何实例或建议,您可以提供。
更新:最后代码块是在底部。 我决定采取一个HTTP请求的建议(在这种情况下,谷歌)。 它的简单,发送到该网站的请求被返回的数据。 如果我不能得到从连接任何内容,也没有互联网。
public static boolean isInternetReachable()
{
try {
InetAddress address = InetAddress.getByName("java.sun.com");
if(address == null)
{
return false;
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return true;
}
最后的代码块:
//checks for connection to the internet through dummy request
public static boolean isInternetReachable()
{
try {
//make a URL to a known source
URL url = new URL("http://www.google.com");
//open a connection to that source
HttpURLConnection urlConnect = (HttpURLConnection)url.openConnection();
//trying to retrieve data from the source. If there
//is no connection, this line will fail
Object objData = urlConnect.getContent();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return true;
}