当前位置:   article > 正文

Android中ping检测的使用_android ping某个ip地址获取延迟数值

android ping某个ip地址获取延迟数值
Ping是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定 网络故障
Ping发送一个ICMP (Internet Control Messages Protocol)即因特网信报控制协议,回声请求消息给目的地并报告是否收到所希望的 ICMP  echo (ICMP回声应答),用来检查网络是否通畅或者网络连接速度的命令。广义来说即发送一个数据包,根据返回的数据包得到丢包率及平均时间得出网络的连接状态。
ping命令可以用在android中检测网络ip或者socket的连接,命令格式:ping ip地址(最简)
ping具有一些参数,可以具体定义包的个数、包的最大存活时间等
-c 发送ICMP包的个数
-i 每次发送数据包中间的间隔时间,单位秒
-l <前置载入> 设置在送出要求信息之前,先行发出的数据包
-s 设置数据包的大小
-t 设置TTL(存活数值)的大小 / TTL : Time to Live 该字段指定IP包被路由器丢弃之前允许通过的最大网段数量
-w deadline 数据包存活最大时间
-W timeout 等待每个响应的最长时间,单位为秒

android ping检测ip地址或socket地址可使用两种方式:
一种是使用Runtime.getRuntime().exec()执行ping命令,根据方法返回值process是否连通判断连接状态
process 的 waitFor() 方法源码中的解释:

必要的情况下,此方法会使当前线程一直处于阻塞状态直到此执行进程从结果上表现出终止。此方法会在子进程被终止的时候立即返回值。如果子进程没有被终止,则当前线程一直阻塞到子进程退出。
return:一般来说 0 表示正常停止,即正常完成,未出现异常情况。列:
  1. Process p = Runtime.getRuntime().exec("ping -c 1 -w 1 " + ipString);
  2. // 读取ping的内容,可不加
  3. InputStream input = p.getInputStream();
  4. BufferedReader in = new BufferedReader(new InputStreamReader(input));
  5. StringBuffer stringBuffer = new StringBuffer();
  6. String content = "";
  7. while ((content = in.readLine()) != null) {
  8. stringBuffer.append(content);
  9. }
  10. // PING的状态
  11. int status = p.waitFor();
  12. if (status == 0) {
  13. sleep(3000);
  14. } else {
  15. isEnable = false;
  16. ExDispatcher.dispatchMessage(ExMessage.PING_CONNECT_BREAK);
  17. interrupt();
  18. }

另一种使用ping命令中发包及包的丢失率判断通信的连接状态
  1. Process process = Runtime.getRuntime().exec("ping "+address);
  2. InputStreamReader r = new InputStreamReader(process.getInputStream());
  3. LineNumberReader returnData = new LineNumberReader(r);
  4. String returnMsg="";
  5. String line = "";
  6. while ((line = returnData.readLine()) != null) {
  7. System.out.println(line);
  8. returnMsg += line;
  9. }
  10. if(returnMsg.indexOf("100% loss")!=-1){
  11. System.out.println("与 " +address +" 连接不畅通.");
  12. } else{
  13. System.out.println("与 " +address +" 连接畅通.");
  14. }
正常的ping检测结果一般为:
====receive====:PING 192.168.43.159 (192.168.43.159) 56(84) bytes of data.
====receive====:64 bytes from 192.168.43.159: icmp_seq=1 ttl=64 time=73.8 ms
====receive====:64 bytes from 192.168.43.159: icmp_seq=2 ttl=64 time=91.4 ms
====receive====:64 bytes from 192.168.43.159: icmp_seq=3 ttl=64 time=1.18 ms
====receive====:64 bytes from 192.168.43.159: icmp_seq=4 ttl=64 time=139 ms
====receive====:--- 192.168.43.159 ping statistics ---
====receive====:4 packets transmitted, 4 received, 0% packet loss, time 3004ms

丢包率为100%时则网络为断开状态,上述结果显示发送为4个数据包,丢包率为0,连接正常





声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/739106
推荐阅读
相关标签
  

闽ICP备14008679号