Android实现“判断域名是否有效”的功能

本文介绍两种判断域名是否有效的实现方式:一是使用ping命令检查域名连通性;二是通过域名解析验证其有效性。并对比了这两种方法的效率差异。

       近期在做公司某一个app项目时,有这样的一个需求:公司app接口有部署在不同ip的服务器,通常我们app是直接请求带公司域名的接口服务器,但有可能遇到公司域名被DSN劫持的情况,这时就需要app转为请求另一个ip的接口服务器。

       这种情况就需要实现“判断域名是否有效”的功能。主要有两种方法:

第一种、通过ping命令来判断域名是否可ping通。

主要实现代码如下:

Process p1 = Runtime.getRuntime().exec("ping -c 1 -w 100 " + 域名);
int status1 = p1.waitFor();
if (status1 == 0) {
   //域名能ping通,有效
} else {
   //域名ping不通
}

第二种、通过域名解析来判断域名是否有效。

主要实现方法如下:

private void AnalyseDomain(String host){
    String IPAddress = "";
    InetAddress ReturnStr = null;
    try {
	ReturnStr = java.net.InetAddress.getByName(host);
	IPAddress = ReturnStr.getHostAddress();
    } catch (UnknownHostException e) {
	e.printStackTrace();
	//未知主机,域名解析失败
    }
    //域名解析成功
}


以上两种方法都可实现“判断域名是否有效”的功能。

按照上述代码进行测试,在效率上,第一种方法较第二种方法要快几十~几百毫秒。

另外需要注意:判断域名是否有效,是一个耗时操作,要在子线程中进行,切记~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值