//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; }IP地址是否能ping通 (非调用系统cmd指令方式)
张小明
前端开发工程师
Flask基于协同过滤算法的理财产品推荐系统-计算机毕业设计源码+LW文档
摘 要 在当今社会,信息技术的浪潮席卷全球,深刻影响着各行各业的发展轨迹,已无缝嵌入人们的日常生活之中。无论是信息的存储管理、业务的快速处理,还是商品的便捷购买,都能轻松通过线上平台实现,极大地提…
基于SpringBoot的爱心捐助平台系统源码设计与文档
前言基于 SpringBoot 的爱心捐助平台系统,聚焦公益捐助 “流程透明化、捐赠可追溯、需求精准匹配” 的核心需求,针对传统爱心捐助 “信息不对称、资金去向不明、捐助效果难量化” 的痛点,构建覆盖捐赠人、受助方(个人 / 公益组织&…
深度学习毕设项目推荐-基于python深度学习算法训练数字识别
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
大数据OLAP vs OLTP:核心区别与选型指南
大数据OLAP vs OLTP:核心区别与选型指南 关键词:大数据、OLAP、OLTP、数据分析、事务处理、选型指南 摘要:本文深入探讨大数据环境下联机分析处理(OLAP)与联机事务处理(OLTP)的核心区别…
阿里巴巴推出Ovis-Image:7B参数就能完美渲染文字的图像生成模型
在人工智能图像生成的战场上,一个令人头疼的问题始终困扰着研究者们:如何让计算机在生成的图片中写出清晰、准确的文字?就像一个刚学会画画的孩子,AI模型虽然能画出美丽的风景和栩栩如生的人物,但一旦需要在图片中加入…
页缓存技术(PageCache/sendfile/mmap)
核心概念解析 1. PageCache(页缓存) 是什么? Linux 内核将磁盘文件数据缓存在物理内存中的一块区域,称为 PageCache。作用: 读操作:若数据在 PageCache 中,直接返回,避免磁盘 I/O&am…