c语言源码ping ip通不通 检测摄像头在不在线 立即返回结果linux

#include <stdio.h>
#include <sys/ioctl.h>
#include <stdlib.h>
#include <string.h>

/* 执行命令,并赋值@reslut */
void executeCMD(const char *cmd, char *result, unsigned long resultLength)
{
    printf("\n执行系统2命令cmd=[%s]\n", cmd);
    char buf_ps[1024]; //一行
    FILE *ptr;
    if ((ptr = popen(cmd, "r")) != NULL)
    {
        while (fgets(buf_ps, sizeof(buf_ps), ptr) != NULL)
        {
            if (resultLength < strlen(result) + strlen(buf_ps))
            {
                printf("长度%ld超出%ld,退出\n", (long)(strlen(result) + strlen(buf_ps)), (long)sizeof(buf_ps));
                break;
            }
            strcat(result, buf_ps);
        }
    }
    else
    {
        printf("popen %s error\n", cmd);
    }
    pclose(ptr);
    ptr = NULL;
    printf("执行结果(%ld):%s\n", (long)strlen(result),result);
}
/**
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>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] [-4] [-6] target_name

选项:
    -t             Ping 指定的主机,直到停止。
                   若要查看统计信息并继续操作 - 请键入 Control-Break;
                   若要停止 - 请键入 Control-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)。
    -S srcaddr     要使用的源地址。
    -4             强制使用 IPv4。
    -6             强制使用 IPv6。


C:\Users\Administrator>
*/
int main(int argc, char *argv[])
{
	char result[40000] = {0}; //存放结果
        executeCMD("ping -c 1 -w 1 59.110.228.61", result, sizeof(result)); //执行命令并返回结果
	if(strstr(result,", 0% packet loss,")!=NULL){//判断字符串参数2是否是参数1的子串
		printf("YES");
	}else{
		printf("NO");
	}
	return 0;
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄人软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值