QT Windows 实现调用Windows API获取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;// 获取ARP表status = 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.mzph.cn/bicheng/4679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB的基础使用

1. 数据集操作 进入MongoDB控制台&#xff1a; # 展示数据库 show dbs# 创建并使用数据库 use 数据库名 如&#xff1a;use articledb# 删除数据库 db.dropDatabase()注&#xff1a; 数据库命名规则&#xff1a;数据库名可以是满足以下条件的任意UTF-8字符串。 不能是空字符串…

入侵渗透 抓取内网windows登陆密码及查看密文相关问题

1. windows登录的明文密码&#xff0c;存储过程是怎么样的&#xff1f; 密文存在哪个文件下&#xff1f;该文件是否可以打开&#xff0c;并且查看到密文&#xff1f; 在Windows中&#xff0c;用户登录的密码不会以明文形式保存&#xff0c;会以加密形式存储。其默认使用NTLM或K…

R-Tree: 原理及实现代码

文章目录 R-Tree: 原理及实现代码1. R-Tree 原理1.1 R-Tree 概述1.2 R-Tree 结构1.3 R-Tree 插入与查询 2. R-Tree 实现代码示例&#xff08;Python&#xff09;结语 R-Tree: 原理及实现代码 R-Tree 是一种用于管理多维空间数据的数据结构&#xff0c;常用于数据库系统和地理信…

拿来即用的响应式布局方法

文章导读&#xff1a;AI 辅助学习前端&#xff0c;包含入门、进阶、高级部分前端系列内容&#xff0c;当前是 HTML 的部分&#xff0c;瑶琴会持续更新&#xff0c;适合零基础的朋友&#xff0c;已有前端工作经验的可以不看&#xff0c;也可以当作基础知识回顾。 响应式设计是一…

【OceanBase诊断调优】—— 如何查看 Root Service 切换完成的时间点

本文详述如何查看 Root Service 切换完成的时间点。 在主 Root Service 节点上的 rootservice.log 搜索。 grep -i "START_SERVICE: full_service !!! start to work!!" rootservice.log[2023-12-08 14:35:58.927245] INFO [RS] ob_root_service.cpp:7111 [27152]…

ax200/ax201/ax210/ax211/ax411等intel网卡无法开启5G热点问题解决方案汇总

目录 故障原因解决方案windowslinuxkernel < 5.5kernel > 5.5方案1 修改linux内核模块代码&#xff08;iwlwifi内核模块&#xff09;&#xff0c;重新编译内核模块并重新导入方案2 修改hostapd代码 最后更新于2024.04.28 故障原因 根本原因是因为英特尔在内核中开启了LA…

算法模板——数据结构篇

声明&#xff1a;参考自acwing 目录 1.单链表 2.双链表 3.数组栈与队列 4.单调栈 1.单链表 int head,e[N],ne[N],idx;void init(){head-1;idx0; } void add_head(int x){ //head有实值e[idx]x,ne[idx]head,headidx; } void add(int k,int x){ e[idx]x,…

Python Flask Web教程:make_response的详细用法

在 Flask 中,make_response 是一个非常实用的函数,它可以用来构造响应对象。下面是 make_response 函数的详细用法: 基本用法 在 Flask 中,make_response 可以用来从返回的数据中创建一个响应对象。它接受几种不同类型的参数,并返回一个 Response 对象。 from flask im…

【CANoe示例分析】TCP Chat(CAPL) with TLS encription

1、工程路径 C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 15.3.89\Ethernet\Simulation\TLSSimChat 在CANoe软件上也可以打开此工程:File|Help|Sample Configurations|Ethernet - Simulation of Ethernet ECUs|Basic AUTOSAR Adaptive(SOA) 2、示例目…

面试题:斐波那契数列

题目描述&#xff1a; 写一个函数,输入n,求斐波那契数列的第n项.斐波那契数列定义如下: F(0) 0 F(1) 1 F(N) F(N - 1) F(N - 2), 其中 N > 1. 解题方法&#xff1a; 算法1: 利用递归实现,这个方法效率有严重问题,时间复杂度为O(2^n) long long Fibon(int n) {if (…

微软如何打造数字零售力航母系列科普03 - Mendix是谁?作为致力于企业低代码服务平台的领头羊,它解决了哪些问题?

一、Mendix 成立的背景 Mendix的成立是为了解决软件开发中最大的问题&#xff1a;业务和IT之间的脱节。这一挑战在各个行业和地区都很普遍&#xff0c;很简单&#xff1a;业务需求通常被描述为IT无法正确解释并转化为软件。业务和IT之间缺乏协作的原因是传统的代码将开发过程限…

2024-4-28

今日流水账&#xff1a; 上午&#xff1a; 打CTF总不能爆零吧&#xff0c;所以看群里师傅说 D3CTF 的那道 qemu 逃逸很简单&#xff0c;所以就把他给做了然后还是在配内核环境&#xff0c;服了&#xff0c;还是不行捏~~~下午继续配&#xff0c;啊啊啊 好好的思考了一下&#xf…

WPF —— MVVM 指令执行不同的任务实例

标签页 设置两个按钮&#xff0c; <Button Content"修改状态" Width"100" Height"40" Background"red"Click"Button_Click"></Button><Button Content"测试"Width"100"Height"40&…

如何让用户听话?

​福格教授&#xff08;斯坦福大学行为设计实验室创始人&#xff09;通过深入研究人类行为20年&#xff0c;2007年用自己的名子命名&#xff0c;提出了一个行为模型&#xff1a;福格行为模型。 模型表明&#xff1a;人的行为发生&#xff0c;要有做出行为的动机和完成行为的能…

web安全---xss漏洞/beef-xss基本使用

what xss漏洞----跨站脚本攻击&#xff08;Cross Site Scripting&#xff09;&#xff0c;攻击者在网页中注入恶意脚本代码&#xff0c;使受害者在浏览器中运行该脚本&#xff0c;从而达到攻击目的。 分类 反射型---最常见&#xff0c;最广泛 用户将带有恶意代码的url打开&a…

Python常见的第三方库[详细解析]

Python是通过模块来体现库&#xff0c;常见的有标准库和第三方库。标准库是Python自带的库&#xff0c;在官方文档中可以查看&#xff0c;第三方库是其他大佬做出来的。 库它的优点有:1.降低程序员的学习成本 2.提高程序的开发效率 。 第1个常见的库为datetime&#xff0c;我们…

二叉树理论和题目

二叉树的种类 在我们解题过程中二叉树有两种主要的形&#xff1a;满二叉树和完全二叉树。 满二叉树 满二叉树&#xff1a;如果一棵二叉树只有度为0的结点和度为 2 的结点&#xff0c;并且度为 0 的结点在同一层上&#xff0c;则这棵二叉树为满二叉树。 这棵二叉树为满二叉树…

机器学习Sklean基础教程

Scikit-learn&#xff08;也称为 sklearn&#xff09;是一个使用 python 语言的机器学习模块&#xff0c;内置了大量的监督和无监督学习算法&#xff0c;主要用于数据挖掘和数据分析。 以下是一个简单关于如何使用 sklearn 进行机器学习的指导&#xff1a; 安装: 首先&#…

如何使用SOCKS5代理?

SOCKS5 是一个代理协议&#xff0c;在使用TCP/IP协议通讯的前端机器和服务器机器之间扮演一个中介角色&#xff0c;使得内部网中的前端机器变得能够访问Internet网中的服务器&#xff0c;或者使通讯更加安全。那么&#xff0c;SOCKS5代理该如何使用呢&#xff1f; 首先需要获取…

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

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