在开发Ping过程中,由一个小白到懵懂开发,开发出功能后总结了一下Android开发Ping时的应该要注意的。

先不说别的上代码:(要是有兴趣就往下看看Ping的参数设置,我也只懂了几个参数设置)

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);new NetPing().execute();}/*** ping 语句传值拼接*/public void Ping() {StringBuilder buffer = new StringBuilder();String result = ""; // 结果集Process ping;try {/*常用格式ping 网址 -n 次数 -l 大小 -w 超时时间(毫秒) -t 不停运行ping www.baidu.com -n 3 -l 32 -w 60 但是实测这样并不行,于是找了其他的方法ping -c 3 -s 32 www.baibu.com*/// ping = Runtime.getRuntime().exec("ping www.baidu.com -n 3 -l 32 ");ping = Runtime.getRuntime().exec("ping -c " + count + " -s " + sByte + " " + url);int status = ping.waitFor(); // 状态InputStream input = ping.getInputStream();BufferedReader in = new BufferedReader(new InputStreamReader(input));String line = "";   // 长度while ((line = in.readLine()) != null) {buffer.append(line).append("\n");}// 输出结果System.out.println("============" + buffer.toString());if (status == 0) {result = buffer.toString();} else {result = "test error";}} catch (IOException | InterruptedException e) {e.printStackTrace();}}@SuppressLint({"WrongThread", "StaticFieldLeak"})private class NetPing extends AsyncTask<String, String, String> {@Overrideprotected String doInBackground(String... params) {Ping();return null;}}
}

我再开发中用到的都在里面了。

下面是ping语言的参数设置:(cmd 输入ping 就会有ping的参数使用介绍)

C:\Users\xu>ping用法: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS][-r count] [-s count] [[-j host-list] | [-k host-list]][-w timeout] [-R] [-S srcaddr] [-c compartment] [-p][-4] [-6] target_name选项:-t             Ping 指定的主机,直到停止。若要查看统计信息并继续操作,请键入 Ctrl+Break;若要停止,请键入 Ctrl+C。-a             将地址解析为主机名。-n count       要发送的回显请求数。-l size        发送缓冲区大小。-f             在数据包中设置“不分段”标记(仅适用于 IPv4)。-i TTL         生存时间。-v TOS         服务类型(仅适用于 IPv4。该设置已被弃用,对 IP 标头中的服务类型字段没有任何影响)。-r count       记录计数跃点的路由(仅适用于 IPv4)。-s count       计数跃点的时间戳(仅适用于 IPv4)。-j host-list   与主机列表一起使用的松散源路由(仅适用于 IPv4)。-k host-list    与主机列表一起使用的严格源路由(仅适用于 IPv4)。-w timeout     等待每次回复的超时时间(毫秒)。-R             同样使用路由标头测试反向路由(仅适用于 IPv6)。根据 RFC 5095,已弃用此路由标头。如果使用此标头,某些系统可能丢弃回显请求。-S srcaddr     要使用的源地址。-c compartment 路由隔离舱标识符。-p             Ping Hyper-V 网络虚拟化提供程序地址。-4             强制使用 IPv4。-6             强制使用 IPv6。

这里Android 开发常用的应该就是 -n 次数 -l 大小 -w 超时时间 ;其他的我在测试时也没测出什么所以然来,所以有兴趣的同志可以一起讨论一下:下面是我做的小测试

C:\Users\xu>ping www.baidu.com -n 3 -l 64正在 Ping www.a.shifen.com [61.135.185.32] 具有 64 字节的数据:
来自 61.135.185.32 的回复: 字节=64 时间=15ms TTL=54
来自 61.135.185.32 的回复: 字节=64 时间=19ms TTL=54
来自 61.135.185.32 的回复: 字节=64 时间=18ms TTL=5461.135.185.32 的 Ping 统计信息:数据包: 已发送 = 3,已接收 = 3,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):最短 = 15ms,最长 = 19ms,平均 = 17ms
C:\Users\xu>ping www.baidu.com -n 3 -l 64 -r 5正在 Ping www.a.shifen.com [61.135.185.32] 具有 64 字节的数据:
请求超时。
请求超时。
请求超时。61.135.185.32 的 Ping 统计信息:数据包: 已发送 = 3,已接收 = 0,丢失 = 3 (100% 丢失)
C:\Users\xu>ping www.baidu.com -n 3 -l 64 -i 2正在 Ping www.baidu.com [61.135.185.32] 具有 64 字节的数据:
来自 192.168.99.1 的回复: TTL 传输中过期。
来自 192.168.99.1 的回复: TTL 传输中过期。
来自 192.168.99.1 的回复: TTL 传输中过期。61.135.185.32 的 Ping 统计信息:数据包: 已发送 = 3,已接收 = 3,丢失 = 0 (0% 丢失)

参数详解

-t:持续ping后接的主机地址,直到ctrl+c来结束命令

-a:将地址解析为主机名

-n:后接发送的echo询问包的数目

-l:后接length,发送包含由length指定的数据量的echo数据包

-i:后接ttl值,将生存时间设置为ttl指定的值

-v:将服务类型字段设置为“tos”指定的值

-r:在“记录路由”字段中记录传出和返回数据包的路由

-s:指定“count”指定的跃点数的时间戳

-j:经过由computer-list指定的计算机列表的路由报文

-w:以毫秒为单位指定超时间隔

-4/6:强制使用ipv4/ipv6协议,后接ipv4/6地址

那么这个命令可以用来做什么呢?主要是检测网络连通性

在用ping命令之前最好用ipconfig /all命令来看一下本地网络设置

1. ping 127.0.0.1;127.0.0.1是一个回送地址,ping回送地址是为了检测本地的TCP/IP协议有没有设置好。

2. ping +本机ip;用于检测本机的IP地址是否设置有误

3. ping+本网网关;为了检测硬件设备是否有问题

4. ping+远程IP地址;用于检测本机或者本网与外网的连接是否正常

参考文献:https://blog.csdn.net/bbc955625132551/article/details/69665160

参考文献:Android:Ping命令测试网络

下一篇:Android网络测试--Traceroute

Android网络测试--Ping命令相关推荐

  1. Android 执行 ping ip 命令是否通的代码

    网上有的说 是android 但命令是windows 的,ping的命令 windows 和linux 以及android 的参数含义会稍有不同,而恰巧会影响这个判断: 先看网上的第一种写法: 有几个 ...

  2. android中的ping命令使用

    前言 在做Android开发时,有时我们需要知道设备的网络好不好,光看手机上的信号格数是不准确的,比如在广州南站,人那么多,如果带宽不够的话,虽然你看着信号是满格的,但是网速也会很慢,有些地方,人少, ...

  3. android手机调用linux ping命令

    开发环境 Eclipse 8.5 在手机的网络环境下,我们需要知道和哪些网络可以连通并进行通信,需要调用操作系统的ping命令 ,在windows平台下ping命令最简单的形式为 ping 127.0 ...

  4. 脑残式网络编程入门(五):每天都在用的Ping命令,它到底是什么?

    本文引用了公众号纯洁的微笑作者奎哥的技术文章,感谢原作者的分享. 1.前言 老于网络编程熟手来说,在测试和部署网络通信应用(比如IM聊天.实时音视频等)时,如果发现网络连接超时,第一时间想到的就是使用 ...

  5. 图解win7下ping命令使用

    ping (网络诊断工具) Ping是Windows.Unix和Linux系统下的一个命令.ping也属于一个通信协议,是TCP/IP协议的一部分.利用"ping"命令可以检查网络 ...

  6. (转)Android 常用 adb 命令总结

    转载地址:https://www.cnblogs.com/bravesnail/articles/5850335.html 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常 ...

  7. telnet/ftp/netstat/ping命令詳細介紹

     很多朋友问到telnet/ftp/netstat/ping 命令的使用方法 今天我就抽点时间做个telnet/ftp/netstat/ping 命令一詳細介紹! 请入门者静下心来.......... ...

  8. ping 命令_命令PING背后发生了什么,记得Windows XP拒绝利用PING命令通信吗

    首先了解PING命令,PING是Windows.Unix和Linux系统下的一个命令,当小伙伴们检查网络情况的时候,先使用的命令肯定是PING命令.PING也属于一个通信协议,是TCP/IP协议的一部 ...

  9. 网络状态测试程序(基于ping命令)

    网络状态测试程序(基于ping命令) 需求分析 在linux下实现一个获取两台设备网络连通性的程序 执行速度尽可能的快 概要设计 网络连通性测试 网络丢包率测试 详细设计 网络连通性 为了减少不必要的 ...

最新文章

  1. 在Developerkit开发板上运行blink例程
  2. Chrome 技术篇-json查看,json格式化,JSONView插件
  3. CAN接口芯片SN65HVD230DR波形
  4. Linux 配置文件
  5. linux基于usb启动配置
  6. 计算机操作系统第三章知识点,深入理解计算机操作系统第三章家庭作业
  7. A - Beautiful Matrix
  8. 原生html冻结表头,CSS如何实现表头冻结效果
  9. Trie树的C++实现
  10. int indexs=(int)(_v+0.5);
  11. MOSS 2010:Visual Studio 2010开发体验(23)——编写自定义的BCS连接器
  12. LeetCode-Sum Root to Leaf Numbers
  13. sublime 快捷键F5执行python程序
  14. 复盘2020年全球医疗行业:新冠疫苗争分夺秒、跨国药企押注中国、药企整合并购不断 | 医药观察...
  15. centos添加桌面快捷方式
  16. Go语言处理Windows系统的图标ICO文件(下)
  17. 论如何科学的看小本子
  18. Android 登录3D翻转动画效果
  19. 奖金600万美元的XPRIZE新冠病毒快速检测竞赛决出大奖获得者,以研制快速、大规模、低成本且简单易用的解决方案
  20. 2023年最新的区块链交易所开发的架构方案

热门文章

  1. 【免杀前置课——Windows编程】五、窗口控件——什么是控件、Windolws 窗口两大类、Windows标准控件/通用控件、控件响应的接收、创建窗口制作不同控件
  2. Caffe--应用实践
  3. 零基础数据挖掘入门系列(三) - 数据清洗和转换技巧
  4. 禁止计算机使用u盘启动,如何禁止u盘启动电脑系统?bios禁止u盘启动系统教程
  5. python计算机语言基础_PYTHON之计算机语言基础知识 —— 编程语言的分类
  6. 电阻、电感、电容元件的交流电路
  7. Linux上配置SVN使用http访问
  8. nachos安装 Ubuntu18.04为例
  9. 计算机视觉——相机定位
  10. 不跟你谈“五险一金”的老板,都是在耍流氓