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

需求分析

  1. 在linux下实现一个获取两台设备网络连通性的程序
  2. 执行速度尽可能的快

概要设计

  1. 网络连通性测试
  2. 网络丢包率测试

详细设计

  1. 网络连通性
    为了减少不必要的时间浪费,在测试网络丢包率前进行连通性测试。测试方法就是先使用ping命令ping少量的包数,如果全部失败,则认为网络不通。
  2. 网络丢包率测试
    使用ping命令进行较大包数的测试,统计丢包率。

代码

  1. 核心思路
    在程序中使用system()函数调用ping命令,返回0代表网络测试成功,非0测试失败。其中-c指定ping包次数,这里为1。
#incldue <stdlib.h>
status=system("ping -c 1 xxx.xxx.xxx.xxx");
  1. 编程实现
#include <stdio.h>
#include <stdlib.h>#define MAX_TEST 1000
#define MAX_ASK 10
#define MAX_CMD_LEN 50int network_ping(char *ip)
{int status;char cmd[MAX_CMD_LEN];sprintf(cmd,"ping -c 1 %s > /dev/null",ip);status=system(cmd);  if(status==0) return 1;return 0;
}int network_is_reachable(char *ip)
{int status;char cmd[MAX_CMD_LEN];sprintf(cmd,"ping -c 1 %s > /dev/null",ip);int i;for(i=0;i<MAX_ASK;i++){status=system(cmd);if(status==0) break;}if(i>=MAX_ASK){return 0;}return 1;
}double network_loss_rate(char *ip)
{if(!network_is_reachable(ip)) return 1.00;int lost=0;int reached=0; int i;for(i=0;i<MAX_TEST;i++){if(network_ping(ip)) reached++;else lost++;}double result=lost*1.0/MAX_TEST;return result;
}int main()
{char ip[]="192.168.1.8";double loss_rate=network_loss_rate(ip);printf("丢包率%.2f%%\n",loss_rate*100);return 0;
}

网络状态测试程序(基于ping命令)相关推荐

  1. 基于PING命令的主机探测

    今天继续给大家介绍渗透测试相关知识,本文主要内容是基于PING命令的主机探测. 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 一.ping与t ...

  2. 25、网络必备知识:Ping命令的7个基础用法,掌握了贼厉害

    系统. 当然,我们今天主要了解并不是这些,而是ping的其它参考. ping命令除了直接ping网络的ip地址,验证网络畅通和速度之外,它还有这些用法. 二.ping -t的使用 不间断地Ping指定 ...

  3. 网络-ICMP协议、Ping命令实现与ICMP攻击

    目录 简介 报文格式 差错报文 常见类型 不发送ICMP差错报文的情况 询问报文 常见类型 实战 简单Ping命令实现 抓包 手算校验和 全部代码 Traceroute 抓包 ICMP重定向攻击 原理 ...

  4. 必备的网络常用测试命令(ping命令)

            ping(Packet InterNet Groper分组因特网探测器) 它是一个可以检查两个主机之间连通性的DOS命令,利用网络上机器IP地址的唯一性,给目标IP地址发送一个ICMP ...

  5. 网络不通使用的PING命令是用的什么协议?

    几乎每一名网工及弱电工程师都遇到过网络不通的情况,通常判断标准是以外网连通性及Ping测试得出结果,而ping属于ICMP协议中的一个工具.今天讲一下ICMP个协议.文末为本周福利.兄弟们记得看完哦. ...

  6. 网络状态诊断工具——netstat命令

    netstat命令可以用来查询整个系统的网络状态.百度百科的定义如下: Netstat的定义是: Netstat是在内核中访问网络连接状态及其相关信息的程序,它能提供TCP连接,TCP和UDP监听,进 ...

  7. 基于python的 ping 网络状态监测方法 亲测有效

    ping 基本概念 ping (Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序 [1] .Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令 ...

  8. ping命令一直测试网络丢包原因及处理解决方法

    所谓的网络丢包是我们在使用ping对目站进行询问时,数据包由于各种原因在信道中丢失的现象.ping 使用了ICMP 回送请求与回送回答报文.ICMP 回送请求报文是主机或路由器向一个特定的目的主机发出 ...

  9. 使用ping命令定位网络延迟问题

    一.背景 使用ping命令发现局域网内延迟大,且变化较大.需要分析耗时在那一层. 二.分析 上图可以看出,本机ping延时非常低.在本机网络 IO 的过程中,流程会有一些差别.有差异的地方总共有两个, ...

最新文章

  1. OpenCV中MeanShift算法视频移动对象分析
  2. windows环境下,django + mongoengine + mongodb环境配置
  3. 要引爆用户增长?抵制“诱惑”更健康
  4. 1313 质因数分解 2012年NOIP全国联赛普及组
  5. leetcode python3 简单题100. Same Tree
  6. LINUX多路IO技术 SELECT VS POLL VS EPOLL
  7. html在线预览wordexcel文档,直接在线预览Word、Excel、TXT文件之ASP.NET
  8. Altium Designer入门教程:软件安装、中文设置与原件库配置
  9. 频响测试软件的使用教程,频谱分析仪的使用方法与技巧
  10. 美学心得(第二百四十一集) 罗国正
  11. python floor函数_Python floor() 函数 - Python 教程 - 自强学堂
  12. SHELL脚本获取某天的上一周日期(星期一为第一天)
  13. 能转PDF格式用的在线软件
  14. 复制html代码怎么粘贴快捷键,电脑复制粘贴快捷键,教您电脑怎么用键盘复制粘贴...
  15. Excel之match index 和vlookup函数 和双条件查找匹配
  16. host文件位置 修改ip映射地址
  17. kafka的topic,broker,partition之间的关系
  18. python实现直方图、条形图、折线图、饼图(参数详情)
  19. 小米电视访问电脑共享文件夹
  20. ESC/POS 指令集和打印机开发

热门文章

  1. Hadoop 表和字段
  2. sqoop export hive数据同步到oracle的用法
  3. MX25上SD卡的插拨检测机制
  4. 广西行政村数据shp_广西自治区乡镇行政区划数据 精度1:10万
  5. 【C语言程序设计】C语言三色旗问题!
  6. oracle查看表空间的属性 ,修改表空间的状态
  7. js array 添加对象_不可不知的 Vue.js 列表渲染
  8. 怎么把pdf转换成ppt直接进行编辑
  9. javaweb仓库管理系统的实现,基于ssm+mysql实现的WMS进销存出库入库系统
  10. char和数值的类型转换