1、查了很多资料最终就两种可行方案
1、通过ping方式
public static boolean isNetworkOnline() {
Runtime runtime = Runtime.getRuntime();
try {
Process ipProcess = runtime.exec("ping -c 3 114.114.114.114");
int exitValue = ipProcess.waitFor();
return (exitValue == 0);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
return false;
}
2、通过socket检查
/**
* 通过socket检查外网的连通性
*/
private static Socket s ;
public static boolean hasNetworkConnection(Context context){
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
boolean connected = (null != activeNetworkInfo) && activeNetworkInfo.isConnected();
if(!connected) return false;
boolean routeExists ;
try {
if(s==null){
s = new Socket();
}
InetAddress host = InetAddress.getByName("114.114.114.114");//国内使用114.114.114.114,如果全球通用google:8.8.8.8
s.connect(new InetSocketAddress(host,80),5000);//google:53
routeExists = true;
s.close();
} catch (IOException e) {
routeExists = false ;
}
return connected && routeExists ;
}
3.通过域名查找ip地址
/**
* 解析域名获取IP数组
* @param host
* @return
*/
public static String[] parseHostGetIPAddress(String host) {
String[] ipAddressArr = null;
try {
InetAddress[] inetAddressArr = InetAddress.getAllByName(host);
if (inetAddressArr != null && inetAddressArr.length > 0) {
ipAddressArr = new String[inetAddressArr.length];
for (int i = 0; i < inetAddressArr.length; i++) {
ipAddressArr[i] = inetAddressArr[i].getHostAddress();
}
}
} catch (UnknownHostException e) {
e.printStackTrace();
return null;
}
return ipAddressArr;
}
解释:
114.114.114.114和8.8.8.8,哪个DNS好?
一、两者的联系
114.114.114.114和8.8.8.8,这两个IP地址都属于公共域名解析服务DNS其中的一部分,而且由于不是用于商业用途的,这两个DNS都很纯净,不用担心因ISP运营商导致的DNS劫持等问题,而且都是免费提供给用户使用的。
二、二者的区别
1、114.114.114.114
114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用,干净无广告,解析成功率相对来说更高,国内用户使用的比较多,而且速度相对快、稳定,是国内用户上网常用的DNS
2、8.8.8.8
8.8.8.8是GOOGLE公司提供的DNS,该地址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用
三、如何合理选择DNS
DNS对于网民来说,就跟灯塔和航海人员的道理是一样的,选择合理的DNS可以有效的帮助我们防止DNS劫持、提升上网速度等,那么,如何合理的选择DNS呢?
1、选择本地干净的DNS
目前世界上的大中型网站都是采用CDN做内容分发的,从而可以确保用户就近的接入、提升访问速度,不少的网站会使用DNS作为识别,因此,如果本人在北京,却选择了上海的DNS,就有可能会被网站认为是上海的用户而引导到上海的服务器上去。
不过所幸,现在的不少网站都根据IP地址来引导用户的。
2、选择安全无毒、免费的DNS
目前国内有不少的免费、安全而且无毒的DNS,常见的如百度提供的180.76.76.76、阿里提供的223.5.5.5和223.6.6.6、前文提到的114.114.114.114
四、如何设置电脑的DNS
1、点击控制面板,点击网络和internet
2、进入后点击更改适配器设置,右键“无线网络连接”选择“属性”
3、在:“此连接使用下列项目”中把“internet协议(TCP/IPV6)”前面的“对号”去掉
4、双击 “internet协议(TCP/IPV4)”,出现属性对话框自动获取IP地址不变
DNS地址:选择“使用下面的DNS服务器地址”,手动填写DNS服务器地址,首选为180.76.76.76;备用为114.114.114.114(或不填)
5、点击确定
百度链接:https://zhidao.baidu.com/question/304558434158495364.html