一.什么是Ping
Ping是Windows、Unix和Linux系统下的一个命令,ping也属于一个通信协议,是TCP/IP协议的一部分。
利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。
Ping发送一个ICMP(Internet Control Messages Protocol)即因特网信报控制协议,回声请求消息给目的地并报告是否收到所希望的ICMP echo (ICMP回声应答),用来检查网络是否通畅或者网络连接速度的命令。广义来说即发送一个数据包,根据返回的数据包得到丢包率及平均时间得出网络的连接状态。
ping命令可以用在android中检测网络ip或者socket的连接,命令格式:ping ip地址(最简)
ping具有一些参数,可以具体定义包的个数、包的最大存活时间等。
二.具体参数
三.代码实现
/*测试Ping ip地址 无法ping:192.155.1.14 可以:192.168.1.41*/ new Ping().execute("www.baidu.com");
public class Ping extends AsyncTask<String, Boolean, Boolean> {
@Override
protected Boolean doInBackground(String... strings) {
try {
Process p = Runtime.getRuntime().exec("ping -c 1 -w 3 " + strings[0]);
InputStream input = p.getInputStream();
InputStreamReader isr = new InputStreamReader(input);
BufferedReader br = new BufferedReader(isr);
String line;
StringBuilder builder = new StringBuilder();
while ((line = br.readLine()) != null) {
builder.append(line);
}
br.close();
isr.close();
input.close();
br.close();
Logs.i("返回的数据:"+builder+" 对比:"+builder.toString().contains("ttl"));
/*如果Ip地址Ping成功后数据里面会有ttl这个数据,所以对比这个字符串即可*/
return builder.toString().contains("ttl");
} catch (MalformedURLException e) {
Logs.e(e.toString());
return false;
} catch (IOException e) {
Logs.e(e.toString());
return false;
}
}
@Override
protected void onPostExecute(Boolean isPing) {
Logs.v("Ping的结果:" + isPing);
if(isPing){
/*设备Ip地址ping成功后向后台发送数据*/
if (!TextUtils.isEmpty(cllx)) {
if (INSPECT_START.equals(cllx)) {
//查验开始
inspectStart();
} else if (INSPECT_END.equals(cllx)) {
//查验结束
inspectEnd();
}
}
// DialogNoticeUtil.show(RequestAction.this,"执法记录仪连接成功");
}else {
DialogNoticeUtil.show(RequestAction.this,"执法记录仪连接失败");
}
}
}
四.日志打印数据
2019-12-17 16:16:27.615 10436-10454/? I/lcb: 返回的数据:PING 192.155.1.14 (192.155.1.14) 56(84) bytes of data.--- 192.155.1.14 ping statistics ---3 packets transmitted, 0 received, 100% packet loss, time 2004ms
对比:false
2019-12-17 16:28:26.812 11066-11084/com.tmri.enforcement.app I/lcb: 返回的数据:PING www.a.shifen.com (183.232.231.172) 56(84) bytes of data.64 bytes from localhost (183.232.231.172): icmp_seq=2 ttl=56 time=20.6 ms--- www.a.shifen.com ping statistics ---2 packets transmitted, 1 received, 50% packet loss, time 1005msrtt min/avg/max/mdev = 20.636/20.636/20.636/0.000 ms
对比:true