QT Windows 实现调用Windows API获取ARP 表

server/2024/9/19 7:53:13/ 标签: QT, Windows APi, Windows, getIpNetTable2, ARP

简介

使用ping方式获取网络可访问或者存在的设备发现部分会无法ping通但实际网络上存在此设备, 但使用arp -a却可以显示出来, 所以现在使用windows API的方式获取arp 表。

实现

参考Windows提供的示例转化成Qt
Qt .pro

LIBS += -liphlpapiLIBS += -lws2_32

main.cpp

#include <QCoreApplication>
#include <QDebug>
#include <winsock2.h>
#include <windows.h>
#include <ws2ipdef.h>
#include <iphlpapi.h>
#include <netioapi.h>int main()
{PMIB_IPNET_TABLE2 pIpNetTable2 = NULL;DWORD dwSize = 0;unsigned long status = 0;// 获取ARPstatus = GetIpNetTable2(AF_INET, &pIpNetTable2);if (status != NO_ERROR){printf("GetIpNetTable2 failed (error code %lu)\n", status);free(pIpNetTable2);return 1;}// 遍历ARP表并打印每项for (DWORD i = 0; i < pIpNetTable2->NumEntries; i++){MIB_IPNET_ROW2 row = pIpNetTable2->Table[i];QString ip = QString::fromStdString(inet_ntoa(row.Address.Ipv4.sin_addr));QString mac = QString::asprintf("%02X-%02X-%02X-%02X-%02X-%02X",row.PhysicalAddress[0], row.PhysicalAddress[1],row.PhysicalAddress[2], row.PhysicalAddress[3],row.PhysicalAddress[4], row.PhysicalAddress[5]);if (ip.startsWith("192.168.3") && mac != QString("00-00-00-00-00-00") && row.State != NlnsUnreachable) // 过滤192.168.3网段, mac地址不能为零, 可到达{qDebug() << "IP: " << ip << ", mac: " << mac;}}// 释放缓冲区free(pIpNetTable2);return 0;
}

显示

在这里插入图片描述

参考

getIpNetTable2 函数 (netioapi.h)


http://www.ppmy.cn/server/22813.html

相关文章

Rust之构建命令行程序(六):信息写入

开发环境 Windows 11Rust 1.77.2 VS Code 1.88.1 项目工程 这次创建了新的工程minigrep. 将错误信息写入标准错误而不是标准输出 此时&#xff0c;我们正在使用宏println!将所有输出写入终端。在大多数终端中&#xff0c;有两种输出:一般信息的标准输出&#xff08;stdout&…

在Visual Studio中查看C项目使用的C语言版本

在Visual Studio中查看C项目使用的C语言版本&#xff0c;可以通过以下步骤进行&#xff1a; 打开Visual Studio。 打开你的C项目。 右键点击项目名称&#xff0c;选择“属性”。 在弹出的属性页中&#xff0c;找到“配置属性” -> “C/C” -> “语言”。 在右侧的“…

数据结构初阶——树和二叉树

数据结构初阶——树和二叉树 1. 树的概念和结构1.1 树的概念1.2 树的表示 2. 二叉树2.1 二叉树的概念和结构2.2 二叉树的存储结构2.2.1 顺序存储2.2.2 链式存储 3. 二叉树的顺序结构及实现——堆3.1 堆的概念和结构3.2 堆的实现3.2.1 堆的定义3.2.2 堆的向上调整3.2.3 堆的向下…

go语言实现简单ngnix样例

目录 1、代码实现样例&#xff1a; 2、postman调用ngnix&#xff0c;转发&#xff1a; 1、代码实现样例&#xff1a; package mainimport ("bytes""encoding/json""io""log""net/http""net/http/httputil""…

共享单车(二):项目日志

stdin, stdout, stderr Linux系统下&#xff0c;当一个用户进程被创建时&#xff0c;与之对应的三个数据流&#xff08;stdin&#xff0c;stdout和stderr&#xff0c;即三个文件&#xff09;也会被创建。 stdin&#xff0c;标准输入文件&#xff0c;通常对应着终端的键盘。 s…

el-upload组件如何上传blob格式的url地址视频

el-upload组件如何上传blob格式的url地址视频 一、存在问题二、直接上代码 需求&#xff1a;想把视频地址url:“blob:http://localhost:8083/65bd3c0f-52ec-4844-b85e-06fdb5095b7b”&#xff0c;通过el-upload组件上传 el-upload是Element UI中用于文件上传的组件&#xff0c;…

论文解读:(UPL)Unsupervised Prompt Learning for Vision-Language Models

文章汇总 存在的问题 之前的来自目标数据集的标记数据(有监督学习)可能会限制可伸缩性。 动机 通过无监督提示学习(UPL)方法&#xff0c;以避免提示工程&#xff0c;同时提高类clip视觉语言模型的迁移性能。 方法解读 主张top-k而不是top-p 注&#xff1a;top-k是指挑选…

springboot整合https使用自签名证书实现浏览器和服务器之间的双向认证

效果描述&#xff1a;本地环境 两台以上电脑 可以实现安装客户端证书的电脑可以访问springboot启动项目&#xff0c;没有安装客户端证书的电脑无法访问springboot启动项目 1.操作&#xff1a;需要安装openssl工具 工具包&#xff1a;Win64OpenSSL_Light-3_3_0.exe 或者Win6…

TablePlus for Mac/Win:开启高效数据开发新纪元

在当今数字化时代&#xff0c;数据的重要性日益凸显。无论是企业还是个人&#xff0c;都需要一款强大而实用的本地原生数据开发软件来提升工作效率。而 TablePlus for Mac/Win 正是这样一款卓越的工具&#xff0c;它为用户带来了全新的体验&#xff0c;让数据开发变得更加轻松、…

CP2532电容触摸检测芯片

这份文件是Chiphomer Technology (Shanghai) Limited提供的CP2532电容触摸检测芯片的用户手册&#xff0c;版本R2.0&#xff0c;发布日期为2008年10月21日。以下是该文件的核心内容概要&#xff1a; 产品简介 CP2532 是一款支持12通道的电容式触摸传感芯片。内嵌高精度电容数…

Stable Diffusion教程:文生图

最近几天AI绘画没有什么大动作&#xff0c;正好有时间总结下Stable Diffusion的一些基础知识&#xff0c;今天就给大家再唠叨一下文生图这个功能&#xff0c;会详细说明其中的各个参数。 文生图是Stable Diffusion的核心功能&#xff0c;它的核心能力就是根据提示词生成相应的…

CSS border边框(理解网页边框制作)

目录 一、border边框介绍 1.概念 2.特点 3.功能 4.应用 二、border边框用法 1.border边框属性 2.边框样式 3.边框宽度 4.边框颜色 5.边框-单独设置各边 6.边框-简写属性 三、border边框属性 四、border边框实例 1.创建带有阴影效果的边框&#xff1a; 2. 创建一个类似标…

C++深度解析教程笔记2

C深度解析教程笔记2 第3课 - 进化后的 const 分析实验-C与C的const区别实验-C与C的const区别&const作用域 第4课 - 布尔类型和引用小结 本文学习自狄泰软件学院 唐佐林老师的 C深度解析教程&#xff0c;图片全部来源于课程PPT&#xff0c;仅用于个人学习记录 第3课 - 进化后…

ElasticSearch教程入门到精通——第五部分(基于ELK技术栈elasticsearch 7.x+8.x新特性)

ElasticSearch教程入门到精通——第五部分&#xff08;基于ELK技术栈elasticsearch 7.x8.x新特性&#xff09; 1. Elasticsearch集成1.1 框架集成-SpringData-整体介绍1.2 Spring Data Elasticsearch 介绍1.3 框架集成-SpringData-代码功能集成1.3.1 创建Maven项目1.3.2 修改po…

如何在Flask应用程序中使用JSON Web Tokens进行安全认证

密码、信用卡信息、个人识别号码&#xff08;PIN&#xff09;——这些都是用于授权和认证的关键资产。这意味着它们需要受到未经授权的用户的保护。 作为开发者&#xff0c;我们的任务是保护这些敏感信息&#xff0c;并且在我们的应用程序中实施强大的安全措施非常重要。 现在…

振弦采集仪在岩土工程监测中的应用案例与成果展示

振弦采集仪在岩土工程监测中的应用案例与成果展示 河北稳控科技振弦采集仪是一种岩土工程监测仪器&#xff0c;通过采集地下振动信号来获取地下构造的动态特性&#xff0c;具有高精度、高灵敏度和高实时性的特点。在岩土工程监测中&#xff0c;振弦采集仪广泛应用于地基沉降、…

Matlab实现CNN-LSTM模型,对一维时序信号进行分类

1、利用Matlab2021b训练CNN-LSTM模型&#xff0c;对采集的一维时序信号进行分类二分类或多分类 2、CNN-LSTM时序信号多分类执行结果截图 训练进度&#xff1a; 网络分析&#xff1a; 指标变化趋势&#xff1a; 代码下载方式&#xff08;代码含数据集与模型构建&#xff0c;附…

【python技术】使用akshare抓取东方财富所有概念板块,并把指定板块概念的成分股保存excel 简单示例

最近有个想法&#xff0c;分析A股某个概念成分股情况进行分析&#xff0c;第一反应是把对应概念板块的成分股爬取下来。说干就干 下面是简单示例 import akshare as ak import pandas as pddef fetch_and_save_concept_stocks(name):# 获取指定股票概念的成分股&#xff0c;并…

在 Ubuntu 下使用 clash-for-linux-backup

记录一下如何在 Ubuntu(其它带bash的Linux应该都可以)下运行Clash 有人已经制作了方便使用的脚本, 仓库为 https://github.com/Elegycloud/clash-for-linux-backup, 直接使用这个仓库就可以了. clone 这个仓库 https://github.com/Elegycloud/clash-for-linux-backup 到本地 …

Spring Boot的启动过程深入了解

深入了解Spring Boot的启动过程不仅需要理论上的理解,结合代码示例更能直观地展现其实现细节。以下是一系列代码示例,配合文字说明,帮助您更深入地理解Spring Boot的启动过程: 一、Spring Boot启动入口 import org.springframework.boot.SpringApplication; import org.s…