用C/C++代码检测ip能否ping通(配合awk和system可以做到批量检测)

时间:2021-05-19

遇到一个小需求, 快速搞定。 来看看用C/C++代码检测ip能否ping通:

#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>using namespace std;string getCmdResult(const string &strCmd) // 这个是获取命令执行的结果, 类似于system, 之前我已经说过了{ char buf[10240] = {0}; FILE *pf = NULL; if( (pf = popen(strCmd.c_str(), "r")) == NULL ) { return ""; } string strResult; while(fgets(buf, sizeof buf, pf)) { strResult += buf; } pclose(pf); unsigned int iSize = strResult.size(); if(iSize > 0 && strResult[iSize - 1] == '\n') // linux { strResult = strResult.substr(0, iSize - 1); } return strResult; } int main(int argc, char *argv[]){ if(argc != 2) { cout << "no" << endl; return -1; } string strCmd = "ping " + string(argv[1]) + " -w 1"; string strRe = getCmdResult(strCmd); if(strRe.find("received") != string::npos && strRe.find(", 0 received") == string::npos) { cout << "ipok:" + string(argv[1]) << endl; } else { cout << argv[1] << endl; } return 0;}

测试一下:

ubuntu@VM-0-13-ubuntu:~$ ./a.out noubuntu@VM-0-13-ubuntu:~$ ./a.out 1.1.1.11.1.1.1ubuntu@VM-0-13-ubuntu:~$ ./a.out 172.16.0.13ipok:172.16.0.13ubuntu@VM-0-13-ubuntu:~$ ./a.out
3.3.3.3
4.4.4.4
ubuntu@VM-0-13-ubuntu:~/tmp_test$

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章