news 2026/5/25 22:25:04

IP地址是否能ping通 (非调用系统cmd指令方式)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
IP地址是否能ping通 (非调用系统cmd指令方式)
//PingIp进行pingIP尝试 #include "winsock2.h" #include <IPHlpApi.h> #pragma comment(lib,"ws2_32.lib") #pragma comment(lib, "iphlpapi.lib") class CPing { public: CPing(void) { hIcmp = LoadLibrary(L"icmp.dll"); if (NULL != hIcmp) { pIcmpCreateFile = (PIcmpCreateFile)GetProcAddress(hIcmp, "IcmpCreateFile"); pIcmpSendEcho = (PIcmpSendEcho)GetProcAddress(hIcmp, "IcmpSendEcho"); pIcmpCloseHandle = (PIcmpCloseHandle)GetProcAddress(hIcmp, "IcmpCloseHandle"); } } ~CPing(void) { FreeLibrary(hIcmp); } bool Ping(const char* ipAdress_) { if (strstr(ipAdress_, ":")) { UF_print_syslog("有盘符\":\",当本地文件处理", FALSE); return 1; }//有盘符的,当本地文件处理,打印日志 const char* ipAdress__ = strstr(ipAdress_, "\\\\"); char ipAdress[256]; if (!ipAdress__) sprintf_s(ipAdress, 250, "%s", ipAdress__); else sprintf_s(ipAdress, 250, "%s", ipAdress__ + 2); char* ipAdress1 = strstr(ipAdress, "\\"); if (ipAdress1) ipAdress1[0] = '\0'; UF_print_syslog(ipAdress, FALSE);//打印日志 if (strlen(ipAdress) < 5){ UF_print_syslog("IP地址非法", FALSE); return 0; }//打印日志 ULONG ulDesIP = inet_addr(ipAdress);//将一个点分十进制的IP转换成一个长整数型数 if (ulDesIP == INADDR_NONE) return 0; // 申请发送缓冲区 void *sendBuffer = new char[32]; // 申请接收缓冲区 unsigned long replySize = sizeof(ICMP_ECHO_REPLY)+32; void *replyBuffer = new char[replySize]; PICMP_ECHO_REPLY pIcmpEchoReply = (PICMP_ECHO_REPLY)replyBuffer; // 获取ICMP echo所需句柄 HANDLE hIcmpFile = pIcmpCreateFile(); if (hIcmpFile == INVALID_HANDLE_VALUE) { delete[] sendBuffer; sendBuffer = NULL; delete[] replyBuffer; replyBuffer = NULL; return -1; } ULONG v_ulTimeout=1000;//超时时间,单位毫秒 USHORT v_usTimes=2;//能一次ping通就算成功,如果一次不行,二次,还没通,当不通处理 // 调用IcmpSendEcho,获取Ping值 for (int i = 0; i < v_usTimes; i++) { pIcmpSendEcho(hIcmpFile, ulDesIP, sendBuffer, 32, NULL, replyBuffer, replySize, v_ulTimeout); if (pIcmpEchoReply->Status == 0) // 未超时 { v_usTimes=0;break; } } //释放缓冲区,关闭句柄 delete[] replyBuffer; delete[] sendBuffer; pIcmpCloseHandle(hIcmpFile); if (v_usTimes==0)return 1; return 0; } private: HINSTANCE hIcmp; typedef HANDLE(WINAPI *PIcmpCreateFile)(VOID); typedef DWORD(WINAPI *PIcmpSendEcho)(HANDLE, IPAddr, LPVOID, WORD, PIP_OPTION_INFORMATION, LPVOID, DWORD, DWORD); typedef BOOL(WINAPI *PIcmpCloseHandle)(HANDLE); PIcmpCreateFile pIcmpCreateFile; PIcmpSendEcho pIcmpSendEcho; PIcmpCloseHandle pIcmpCloseHandle; }; //是否能PIng通 输入的地址 bool PingIp(const char* ipAdress_) { CPing pp; if (pp.Ping(ipAdress_)) return 1; return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 10:44:57

高考学校和专业的选择

高考学校和专业的选择是&#xff1a;专业占比&#xff1a;40%学校占比&#xff1a;30%地域占比&#xff1a;30%学校占比&#xff0c;国内就是按这个顺序&#xff0c;清北、C9、985、211、其它有一定名气的一二本、普通二本、末流二本原三本、大专。这儿值得一提的是&#xff0c…

作者头像 李华
网站建设 2026/5/25 5:21:24

环境振动估算阻尼比 (SDOF)研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

作者头像 李华
网站建设 2026/5/25 14:07:56

基于springboot德育家校共建平台系统源码设计与文档

前言基于 SpringBoot 的德育家校共建平台系统&#xff0c;聚焦校园德育 “家校协同、过程可溯、评价量化” 的核心需求&#xff0c;针对传统德育工作 “家校沟通少、评价主观化、育人闭环缺失” 的痛点&#xff0c;构建覆盖学生、家长、班主任、德育处管理员的全流程德育管理生…

作者头像 李华
网站建设 2026/5/23 16:54:03

基于SpringBoot的音乐网站系统源码设计与文档

前言基于 SpringBoot 的音乐网站&#xff0c;聚焦音乐娱乐 “个性化推荐、内容多元化、互动社交化” 的核心需求&#xff0c;针对传统音乐网站 “推荐精准度低、互动性弱、版权管理缺失” 的痛点&#xff0c;构建覆盖普通用户、音乐人、平台管理员的全流程音乐服务生态。系统采…

作者头像 李华