news 2026/4/15 14:49:54

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/4/11 23:20:36

基于SpringBoot的爱心捐助平台系统源码设计与文档

前言基于 SpringBoot 的爱心捐助平台系统&#xff0c;聚焦公益捐助 “流程透明化、捐赠可追溯、需求精准匹配” 的核心需求&#xff0c;针对传统爱心捐助 “信息不对称、资金去向不明、捐助效果难量化” 的痛点&#xff0c;构建覆盖捐赠人、受助方&#xff08;个人 / 公益组织&…

作者头像 李华
网站建设 2026/4/15 3:10:02

深度学习毕设项目推荐-基于python深度学习算法训练数字识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/15 9:36:52

大数据OLAP vs OLTP:核心区别与选型指南

大数据OLAP vs OLTP&#xff1a;核心区别与选型指南 关键词&#xff1a;大数据、OLAP、OLTP、数据分析、事务处理、选型指南 摘要&#xff1a;本文深入探讨大数据环境下联机分析处理&#xff08;OLAP&#xff09;与联机事务处理&#xff08;OLTP&#xff09;的核心区别&#xf…

作者头像 李华
网站建设 2026/4/15 9:37:20

阿里巴巴推出Ovis-Image:7B参数就能完美渲染文字的图像生成模型

在人工智能图像生成的战场上&#xff0c;一个令人头疼的问题始终困扰着研究者们&#xff1a;如何让计算机在生成的图片中写出清晰、准确的文字&#xff1f;就像一个刚学会画画的孩子&#xff0c;AI模型虽然能画出美丽的风景和栩栩如生的人物&#xff0c;但一旦需要在图片中加入…

作者头像 李华
网站建设 2026/4/15 1:09:39

页缓存技术(PageCache/sendfile/mmap)

核心概念解析 1. PageCache&#xff08;页缓存&#xff09; 是什么&#xff1f; Linux 内核将磁盘文件数据缓存在物理内存中的一块区域&#xff0c;称为 PageCache。作用&#xff1a; 读操作&#xff1a;若数据在 PageCache 中&#xff0c;直接返回&#xff0c;避免磁盘 I/O&am…

作者头像 李华