基于c++ boost实现阻塞式ping指定IP

2023-05-16

基于c++ boost实现阻塞式ping指定IP

1.前言

在实际业务场景中,可能需要阻塞式检测目标IP连通性,本程序基于c++ boost库实现了一个简易的阻塞式ping指定IP例子。

2.原理

在循环中指定ping IP次数,通过标准输出判断有无"ttl"字段,如果字段的数目等于ping IP次数,那么就认为IP可达。

3.代码实例

3.1 ping.cpp

#include <iostream>
#include <string>
#include <signal.h>
#include <boost/process.hpp>

const std::string IP_ADDR("baidu.com");
const int PING_MAX_NUM = 4;
bool EXIT_ENABLE=false;

void sigintHandler(int signal)
{
    EXIT_ENABLE = true;
}

int main()
{
    signal(SIGINT, sigintHandler);
    int status_count = 0;
    while(status_count != PING_MAX_NUM) {
        std::string cmd("ping -c " + std::to_string(PING_MAX_NUM) + " " + IP_ADDR);
        boost::process::ipstream pipe_stream;
        boost::process::child c(cmd, boost::process::std_out > pipe_stream);

        std::string line;
        while (pipe_stream && std::getline(pipe_stream, line) && !line.empty()) {
            std::cerr << line << std::endl;
            if (line.find("ttl") != std::string::npos) {
                ++status_count;
            }
        }
        c.wait();
        if (EXIT_ENABLE) {
            break;
        }
        if (status_count != PING_MAX_NUM) {
            status_count = 0;
            usleep(1e6);
        }
    }
    if (!EXIT_ENABLE) {
        std::cout << "The network is normal." << std::endl;
    } else {
        std::cout << "Process exit." << std::endl;
    }
    return 0;
}

3.2 CMakeLists.txt

cmake_minimum_required(VERSION 3.0.2)
project(ping)

find_package(Boost REQUIRED COMPONENTS system)

add_executable(${PROJECT_NAME} ping.cpp)
target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})

4.运行结果

/home/test/code/ping/build/ping
PING baidu.com (110.242.68.66) 56(84) bytes of data.
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=1 ttl=52 time=418 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=2 ttl=52 time=434 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=3 ttl=52 time=887 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=4 ttl=52 time=683 ms
The network is normal.

5.拓展

基于boost::process::child组件,可以根据实际需求运行不同的终端命令拿到终端的标准输出,比如将命令改为"ifconfig",
便可编程获取系统网卡信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于c++ boost实现阻塞式ping指定IP 的相关文章

  • rviz更改机器人位置,不考虑gazebo环境。

    文章目录 问题描述解决方案 问题描述 在RVIZ中想要去更改机器人模型位置 xff0c 但不想考虑gazebo的各种因素 xff0c 只想通过别人给的数据流去实时更改机器人在rviz中的位置 解决方案 首先 xff0c 先将原理弄清楚 在R
  • STM32+RTC实现时钟无法设置时间以及掉电时间清零的问题

    最近在实现一个万年历的功能 xff0c 其中遇到了无法设置时间以及掉电时间清零的问题 h文件代码如下 xff1a span class token macro property span class token directive keyw
  • contains an incorrect path解决方法

    在移植UCOS 时出现如下报警 在确认头文件路径添加无误的情况下 xff0c 发现是因为文件名的UCOS 这个3不应用罗马数字 xff0c 用字母I代替 xff0c 改为UCOSIII并重新添加文件后错误消失
  • 理论 - 半波偶极子天线原理与计算

    概述 半波偶极子天线是一种结构简单的基本线天线 xff0c 也是一种经典的 迄今为止使用最广泛的天线之一 半波偶极子天线由两根直径和长度都相等的直导线组成 xff0c 每根导线的长度为1 4个工作波长 导线的直径远小于工作波长 xff0c
  • HFSS - 半波偶极子天线的设计与仿真

    一 理论计算 原理及理论计算部分可以看我上一篇文章理论 半波偶极子天线原理与计算 二 模型创建 1 模型概图如下 2 变量参数 变量意义变量名变量值 单位 mm 工作波长wavelength100天线总长度length0 48 x wave
  • STM32关于驱动段码屏显示

    本篇文章主要记录一下我在工作中用STM32单片机驱动段码屏显示内容 xff0c 不讲解具体的驱动原理 xff0c 只是单纯记录如何编写驱动屏幕图标显示的代码 xff0c 以便我日后查看 单片机 xff1a STM32L152RCT6A ID
  • HFSS - 同轴馈电矩形微带天线设计与仿真

    一 设计指标 中心频率 xff1a 2 45GHz介质板相对介电常数 xff1a 4 4介质板厚度 xff1a 1 6mm馈电方式 xff1a 50 Omega 同轴线馈电 二 同轴馈电微带天线设计 同轴线馈电的矩形微带天线结构如下图所示
  • HFSS - 圆极化矩形微带天线设计与仿真

    xff08 这个仿真了好久啊啊啊啊啊 xff0c 搞得这么晚 xff0c 哭辽 xff09 一 设计指标 设计一个右旋圆极化GPS天线 中心频率 xff1a 1 575GHz轴比 xff1a 中心频率处圆极化波小于2dB馈电方式 xff1a
  • HFSS - 倒F天线的设计与仿真

    一 倒F天线概述 倒F天线是单极子天线的一种变形结构 xff0c 其衍变发展的过程可以看成是从1 4波长单极子天线到倒L天线再到倒F天线的过程 xff0c 如下图所示 首先 xff0c 将单极子天线进行90 弯曲 xff0c 就能得到倒L天
  • 理论 - 平面倒F天线(PIFA)

    一 概述 PIFA Planar Inverted F shaped Antenna 天线即平面倒F形天线 xff0c 因为整个天线的形状像个倒写的英文字母F而得名 多年来 xff0c 多数手机天线都一直沿用这种传统的PIFA天线设计方案
  • HFSS - GSM 900 单频PIFA天线的设计与仿真

    一 设计指标 中心频率 xff1a 920MHz回波损耗带宽 xff1a 大于80MHz 各个参数变量如下表 变量意义变量名变量初始值 xff08 单位 xff1a mm xff09 天线高度H10辐射金属片长度L155辐射金属片宽度W13
  • HFSS - GSM 900 和 DCS 1800 双频PIFA天线的设计与仿真

    一 概述 PIFA天线可以采用在辐射金属片上开槽的技术来实现双频和多频段工作 采用如下图所示的U形开槽方案来实现PIFA天线在GSM 900和DCS 1800 两个频段上的工作 其中 xff0c 在GSM 900频段 xff0c 信号上行频
  • HFSS - 矩形口径喇叭天线的设计与仿真

    一 理论 喇叭天线是一种应用广 泛的微波天线 xff0c 其优点是结构简单 xff0c 频带宽 xff0c 功率容量大 xff0c 调整与使用方便 合理地选择喇叭尺寸 xff0c 可以获得良好的辐射特性 相当尖锐的主瓣 较小副瓣和较高的增益
  • 【record】1、FS-I6设置与对码

    官方说明文档 先贴一张官方的说明文档 xff1b 注意的点 xff1a 遥控器设置中 xff0c 按住CANCEL保存 xff1b 遥控器设置 xff08 1 xff09 恢复出厂设置 这里我对FS i6直接恢复出厂设置 xff0c 当然可
  • keil无法观察局部变量

    keil观察局部变量的时候 xff0c 发现总是显示not in scope xff0c 是优化级别过高 xff0c 降低优化级别即可
  • rplidar连接计算机显示process has died.....解决方法

    检测是否打开roscore可能是串口未赋予权限 xff0c 解决方法 xff1a sudo chmod 777 dev ttyUSB0
  • ST-LINK/V2:cannot reset target shutting down debug session

    使用 ST LINK V2 为 STM32 下载程序时 xff0c 总是不成功 xff0c 并弹出如下对话框 xff1a 解决方法 xff1a 打开 MDK 的安装目录下的 STLink xff0c 如下是我的路径 xff1a D mdk5
  • C++声明与定义以及初始化,头文件的书写规范

    初始化 初始化 xff1a 当一个对象被创建的同时获得了特定的值 1 初始化不是赋值 xff0c 初始化的含义是创建变量时赋予其一个初始值 xff0c 而赋值的含义是把对象的当前值擦除 xff0c 而以一个新值代替 xff1b 2 默认初始
  • 【C++】Cmake使用教程(看这一篇就够了)

    文章目录 引言一 环境搭建二 简单入门2 1 项目结构2 2 示例源码2 3 运行查看 三 编译多个源文件3 1 在同一个目录下有多个源文件3 1 1 简单版本3 1 1 1 项目结构3 1 1 2 示例代码3 1 1 3 运行查看 3 1
  • 编码

    UTF 8 UTF 8以字节为单位对Unicode进行编码 从Unicode到UTF 8的编码方式如下 xff1a Unicode编码 十六进制 UTF 8 字节流 二进制 000000 00007F0xxxxxxx000080 0007F

随机推荐

  • tensorflow-gpu1.14 + Win10 + CUDA10.0 + CUDNN7.5.0 + Python3.6 + VS2015安装

    最近学习深度学习 xff0c 在配置环境中的过程中遇到很多问题 xff0c 在这进行总结 xff0c 希望对大家有帮助 一 整个软件安装配置过程 xff0c 很多博客写的很详细 xff0c 附上链接 xff1b https blog csd
  • VS2015下配置海康威视SDK

    1网络摄像头可以在官网下载到SDK开发包 xff0c 进入海康威视官网 xff0c 选择何时的版本 xff0c 点击下载 https www hikvision com cn download 61 html 下载完成进行解压 解压完成 x
  • 如何提升串口响应速度

    最近负责编写公司的工厂模式指令集 xff0c 碰到了一些代码之外的问题 xff0c 困扰了我很久 因为综测那边对串口响应速度的要求很高 xff0c 要求从上位机下发指令开始到上位机接收到完整回复 xff0c 整个过程的响应速度要达到几十个m
  • rv1126 SDK简单编译

    rv1126 SDK简单编译 在工程的根目录下执行命令 source envsetup sh 会出现很多选项 xff0c 选择 rockchip rv1126 rv1109 spi nand 这个选项 xff0c 输入93 我的FLASH是
  • socket套接字编程之UDP协议封装

    1 UDP 协议特点 xff1a 传输层协议 无连接 不可靠传输 面向数据报 2 封装之前先将清楚几个要点 xff1a 2 1网络字节序 xff1a 注意设备的大小端 发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出 接收主机把
  • C语言 使用调用函数的方法,将两个字符串连接起来

    因本人才疏学浅 xff0c 见识浅薄 xff0c 有不当之处望指正 xff0c 谢谢 xff01 这次用调用函数的方法 xff0c 连接两个字符串 在被调函数中可以说明形参数组的大小 xff0c 也可以不说明形参数组的大小 例如cat st
  • STL容器特点对比

    1 分类 序列式容器 xff08 sequential container xff09 vector list array deque forward list关联式容器 xff08 associative container xff09
  • 【RT-Thread】PIN 设备源码分析

    目录 1 获取引脚编号2 设置引脚模式3 设置引脚电平4 绑定 PIN 中断回调函数5 使能引脚中断6 总结7 PIN 设备使用示例 关于 RT Thread 的 PIN 设备驱动应用层面的介绍可以直接参考 RT Thread 的官网 xf
  • 基于VSCode的Linux内核调试环境搭建

    1 安装开发工具 span class token function sudo span span class token function apt span span class token function install span b
  • STM32定时器周期任务函数编写

    在STM32中我们对定时器的周期任务有一定的需求 xff0c 但在使用过程中 xff0c 需要将一些任务写到中断中 xff0c 中断函数会看上去比较复杂 xff0c 并且会有好多标志位 以流水灯为例 xff0c 周期为1s 介绍一下我自己的
  • stm32寄存器封装

    文章目录 前言 一 版本一 二 版本二 三 版本三 前言 本文记录的是用stm32开发的时候 一些底层的寄存器封装 固件库是如何帮我们完成这些工作的 一 版本一 代码如下 示例 span class token comment 外设基地址
  • 使用TI的MSP430实现一个单片机与上位机的数传系统。(西安电子科技大学综合应用开发实验)

    题目要求 xff1a 目标 xff1a 智能控制系统 利用单片机 xff08 开发平台任选 xff09 设计并编程实现一个单片机与上位机的数传系统 要求 xff1a 对单片机和PC 手机 单片机之间的通信进行设计 如果大作业没有设计通信部分
  • NVIDIA Jetson Xavier NX 控制GPIO

    NVIDIA Jetson Xavier NX 控制GPIO 文章目录 NVIDIA Jetson Xavier NX 控制GPIO前言一 简介二 代码实例1 gpio h2 gpio cpp 三 拓展 前言 在linux系统中以文件io的
  • NVIDIA Jetson Xavier NX禁用上电自启,使用按键开关机

    NVIDIA Jetson Xavier NX禁用上电自启 xff0c 使用按键开关机 文章目录 NVIDIA Jetson Xavier NX禁用上电自启 xff0c 使用按键开关机前言一 原理二 拓展 前言 NX默认上电自启 xff0c
  • Linux系统设置共享文件夹

    Linux系统设置共享文件夹 文章目录 Linux系统设置共享文件夹一 设置原理二 设置步骤1 安装samba2 创建 设置共享文件夹 三 测试 一 设置原理 基于Ubuntu16 04 xff0c 采用在线安装samba库的方式设置共享文
  • Linux:复位USB设备

    Linux xff1a 复位USB设备 文章目录 Linux xff1a 复位USB设备前言一 基本原理二 代码实例总结 前言 在Ubuntu16 04下开发SDR设备数据处理程序时 xff0c msi sdr设备有时运行几个小时后就会出现
  • Ubuntu Terminal终端默认常用快捷键总结

    Ubuntu Terminal终端默认常用快捷键总结 Ubuntu Terminal终端快捷键默认设置如下 xff0c 不同的发行版本可能有所出入 xff0c 以下快捷键在Ubuntu18 04LTS下可用 1 文件 快捷键说 明Ctrl
  • 基于c++ boost库实现进程管理

    基于c 43 43 boost库实现进程管理 1 前言 基于c 43 43 boost库与Terminator终端 xff0c 实现启动进程 进程运行状态监听 自动重启进程 杀死进程 设置进程环境变量等基础功能 2 原理 启动 杀死进程基于
  • 【RT-Thread】UART 设备源码分析

    官网介绍 I O 设备模型框架如下图 xff1a 但看到官网写道 设备驱动层是一组驱使硬件设备工作的程序 xff0c 实现访问硬件设备的功能 它负责创建和注册 I O 设备 xff0c 对于操作逻辑简单的设备 xff0c 可以不经过设备驱动
  • 基于c++ boost实现阻塞式ping指定IP

    基于c 43 43 boost实现阻塞式ping指定IP 1 前言 在实际业务场景中 xff0c 可能需要阻塞式检测目标IP连通性 xff0c 本程序基于c 43 43 boost库实现了一个简易的阻塞式ping指定IP例子 2 原理 在循