Qt获取本机Mac地址、Ip地址

QT获得本地IP以及MAC地址 getMacString() : 通过本地的ip地址获得该IP地址关联的网络接口的MAC地址。getIPSttring():连接的ip以及端口号来返回本地的ip地址。 阅读详情
AI摘要

博客分享了获取本机IP地址和Mac地址的方法,经多设备测试暂无问题。因本地可能有多个Mac地址,需多次过滤。还介绍了在VS和QtCreator开发时的配置,给出具体实现代码,可在cmd用ipconfig /all命令查看网络配置信息。

一、简述

今天给大家分享一个获取本机IP地址和Mac地址的方法,经过多次测试,台式机、笔记本等多个设备,暂时没有发现问题。

由于很多时候本地安装了虚拟机、蓝牙、无线网卡或者其他设备等,会有多个Mac地址,所以需要进行多次过滤,其中也是遇到了很多坑,经过多次改进,如果小伙伴们有其他更好的方法,欢迎一起讨论。

二、代码之路

如果是使用VS开发记得添加上Network模块,如果是QtCreator则在pro文件中添加上Qt += Network。

在这里插入图片描述

下面就是具体实现代码,大家可以直接拷贝到自己的工程中进行测试

/*********记得Qt模块中加上Network**********/
#include <QNetworkInterface>
void getLocalIpAndMacAddress(QString& ipAddress, QString& macAddress)
{
    for (QNetworkInterface netInterface : QNetworkInterface::allInterfaces())
    {
        //MAC地址
        if (netInterface.hardwareAddress().size() == 17)
        {
            // 包含以太网、Wifi等类型;
            QNetworkInterface::InterfaceType type = netInterface.type();
            if (type == QNetworkInterface::Ethernet
                || type == QNetworkInterface::Ieee80211
                || type == QNetworkInterface::Wifi) {
                QNetworkInterface::InterfaceFlags flags = netInterface.flags();
                bool isUp = flags & QNetworkInterface::IsUp;
                bool isRunning = flags & QNetworkInterface::IsRunning;
                bool isVirtual = flags & QNetworkInterface::IsLoopBack;
                macAddress = netInterface.hardwareAddress().replace(":", "-");
                QString name = netInterface.humanReadableName();
                // 测试信息;
//                 qDebug() << "macAddress:" << macAddress << "DisplayName:" << netInterface.humanReadableName();
//                 qDebug() << flags << "\r\n";
                // 剔除VMware字段;
                if (isUp && isRunning && !isVirtual && !name.contains("VMware")) {
                    macAddress = netInterface.hardwareAddress().replace(":", "-");
                    // 获取IPV4地址;
                    QList<QNetworkAddressEntry> addressEntries = netInterface.addressEntries();
                    for (QNetworkAddressEntry entry : addressEntries) {
                        if (entry.ip().protocol() == QAbstractSocket::IPv4Protocol) {
                            ipAddress = entry.ip().toString();
                            break;
                        }
                    }

                    // 测试信息;
//                     qDebug() << QString("IpAdress:%1, MacAddress:%2, DisplayName:%3, Type:%4")
//                         .arg(ipAddress).arg(macAddress).arg(netInterface.humanReadableName()).arg(type);
                    
                    if (ipAddress.isEmpty() || macAddress.isEmpty())
                        continue;
                    else
                        break;
                }
            }
        }
    }

    // check打印(可去除)
    if (!ipAddress.isEmpty())
        qDebug() << QString("Local IpAddress:%1").arg(ipAddress);
    else
        qDebug() << "Get local IpAddress failed";
    if (!macAddress.isEmpty())
        qDebug() << QString("Local MacAddress:%1").arg(macAddress);
    else
        qDebug() << "Get local MacAddress failed.";
}

void testFunction()
{
    QString ipAddress;
    QString macAddress;
    getLocalIpAndMacAddress(ipAddress, macAddress);

    qDebug() << "ipAddress:" << ipAddress;
    qDebug() << "macAddress:" << macAddress;

}

大家可以在cmd控制台窗口中通过下面的命令输出本机设备的操作系统中所有网络配置信息。

ipconfig /all

在这里插入图片描述

下面以台式机网口插网线为例,可以对比代码执行结果:

在这里插入图片描述


觉得有帮助的小伙伴可以手动点个赞,如果很有帮助也可以打赏,一块两块也是情,哈哈哈!

QT入门系列(8) 获取IP地址 MAC地址 操作系统版本/位数 阅读详情

相关推荐

Qt获取本机的ip地址、MAC地址

方法1: 获取ip地址: QString getHostIpAddress() { QString strIpAddress; QList<QHostAddress> ipAddressesList = QNetworkInterface::allAddresses(); // 获取第一个本主机的IPv4地址 int nListSize = ipA...

qq_21342281的博客 2080

qt如何获取设备上的mac地址

需要注意的是,在使用QNetworkInterface类获取MAC地址时,可能会因为多个网卡存在或者用户权限等原因而获取到不正确的结果,因此需要做好错误处理。另外,尽管获取MAC地址可以用于唯一标识设备,但是由于MAC地址易被伪造和修改,因此在实际开发中应避免将其作为设备的唯一身份标识符使用。在Qt中,可以使用QNetworkInterface类来获取本机的网卡信息和MAC地址。

weixin_43972388的博客 3993

Qt获取本机正在使用的IP和Mac地址(过滤未使用的 过滤虚拟机的 过滤链路的)

获取本地Mac地址( 排除虚拟机Mac地址 ) VM 虚拟机地址的Mac固定为 00:50:56:C0:00:01 和00:50:56:C0:00:08 QString Window::getHostMacAddress() { qDebug() << "getHostMacAddress"; QList<QNetworkInterface> ne...

qq_38008379的博客 2074

qt准确获取本机mac和ip地址

用网上的代码获取时总是不准确,只能自己封装一下。qt通过QNetworkInterface类来获取网络接口的各种信息,我是通过解析QNetworkInterface数组来获取ip和mac的

小土同学的博客 4870

QT获取本机的IP地址、mac地址、mask地址和广播IP(Ubuntu QT环境下实现)

1、简介用QT做网络通讯数据传输时,要先获取本机的网卡的IP地址、mac地址、mask地址和广播IP,以便创建socket进行通讯数据传输。 2、本博文主要封装函数:(1)、getIP():获取本机网卡的ipv4地址。 (2)、getMac():获取本机的mac地址。 (3)、getNetmask():获取本机网卡的子网掩码。 (4)、getBroadcastIP():获取本机网卡的广播IP地址...

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 2079

Qt获取IP地址、MAC地址等网卡信息,区分本地网卡、无线网卡和虚拟网卡

Qt获取IP地址、MAC地址等网卡信息,区分本地网卡、无线网卡和虚拟网卡

【Qt】QNetworkInterface 获取本机的IP地址和MAC地址

获取网络接口,使用 QNetworkInterface::allInterfaces() 获取所有网络接口列表; 过滤无效接口,通过 flags() 过滤掉非活动状态(IsUp)和回环接口(IsLoopBack);。 获取MAC地址,通过 hardwareAddress() 获取接口的MAC地址,格式为 XX:XX:XX:XX:XX:XX; 获取IP地址,遍历 addressEntries() 获取所有IP地址,支持IPv4和IPv6。

weixin_43510208的博客 692

新能源知识库(37)三代储能电芯介绍

2025年储能电芯三代技术演进概述 截至2025年6月,储能电芯已明确划分为三代: 第一代(280Ah):2019-2023年主流,能量密度180Wh/kg,循环寿命8000次,成本降至0.6元/Wh; 第二代(314Ah):2023年起主导,容量超1kWh,能量密度提升20%,循环寿命达15000次,系统成本降低15%; 第三代(500Ah+):2024年量产,能量密度突破440Wh/L(如宁德时代587Ah、阳光电源684Ah),20尺集装箱容量达6-9MWh,零部件成本降30%。 技术路线分化:卷绕派

竹君子之家 7904

Qt 获取本机的IP地址、Mac地址

获取IP地址 QString getHostIpAddress() { QString strIpAddress; QList ipAddressesList = QNetworkInterface::allAddresses(); // 获取第一个本主机的IPv4地址 int nListSize = ipAddressesList.size(); for

刺猬先生 2万+

英飞凌TC3xx的GTM模块到底有多强?从PWM生成到电机驱动,一篇讲透车载定时器核心

本文深入解析英飞凌TC3xx系列中的GTM模块在汽车电子领域的强大功能,从PWM生成到电机驱动的全链路设计。通过模块化架构和硬件级解决方案,GTM显著提升系统精度和响应速度,适用于电机控制、电源管理等复杂场景。文章结合实战经验,详细拆解GTM的技术实现和性能优势。

weixin_27741699的博客 202

VirtualLab初学者教程-1.用户界面

目录前言一、VirtualLab Fusion简介1.软件2.内置工具箱:二、用户界面认识1.上方菜单栏2.右侧面主窗口3.底部窗口附 前言 感觉做VirtualLab的资料不是特别多,可能用的朋友也比较少吧,笔者最近也因为大创需要刚刚开始入门,把网上有的英文资料整理了一下,加了一点自己的内容发出来希望帮助更多在学习中的朋友,有用词不当之处还请多多包涵。 一、VirtualLab Fusion简介 因为是第一讲,简单啰嗦一下软件本身,参考官方介绍。 1.软件 VirtualLab是由德国LightTran

ClaireTang1的博客 2万+

Qt获取本机IP、MAC地址、子网掩码、网卡名等函数设计

获取本机IP函数 QString getIp() { QString myIp; QList<QHostAddress> ipList = QNetworkInterface::allAddresses(); for (int i = 0; i < ipList.size(); ++i) // 获取第一个本主机的IPv4地址 { if (ipList.at(i) != QHostAddress::LocalHost &&amp

weixin_42887343的博客 2288

Nordic nRF52832实战:手把手教你搭建智能手环BLE通信框架(附完整代码)

本文详细介绍了如何使用Nordic nRF52832芯片搭建智能手环的BLE通信框架,涵盖芯片优势、协议栈初始化、低功耗广播策略及健康数据服务实现。通过完整代码示例和架构设计,帮助开发者快速掌握蓝牙低功耗通信技术,适用于可穿戴设备开发。

weixin_29192141的博客 246

qt获取本机全部ipv4_QT5下获取本机IP地址、计算机名、网络连接名、MAC地址、子网掩码、广播地址...

获取主机名称/** 名称:get_localmachine_name* 功能:获取本机机器名称* 参数:no* 返回:qstring*/qstring cafesclient::get_localmachine_name(){qstring machinename = qhostinfo::localhostname();return machinename;}获取本机ip地址/** 名称...

weixin_39616339的博客 519

PWM调光原理详解:为什么你的LED灯会闪烁?从硬件到软件的避坑指南

本文深入解析PWM调光原理,揭示LED灯闪烁的根本原因,并提供从硬件设计到软件算法的全面解决方案。通过分析人眼视觉暂留机制和PWM参数设置,帮助开发者避免频闪问题,提升照明质量。特别适合电子工程师和智能家居开发者参考。

weixin_29189363的博客 292

CPA-7-资产减值

摘要:本文系统梳理了资产减值会计处理规范,涵盖六大要点:1)不同资产适用的减值准则(存货、长期资产、金融资产);2)减值测试触发条件与例外情形(商誉等需年度强制测试);3)存货可变现净值计算方法及特殊考量;4)可收回金额的双重判定标准(公允价值净额与现值孰高);5)资产组认定标准及减值分摊顺序(先商誉后按比例);6)含少数股东商誉的减值测试方法(需调整包含完全商誉的账面价值)。文中通过具体案例演示了合并报表中商誉减值的计算过程,强调比较基准应包含少数股东权益对应的商誉价值。

qq_34047402的博客 203

QT获取本机IP和MAC地址的方法(转)

https://dabaojian.blog.youkuaiyun.com/article/details/51520523

Hello,小高同学 1697

86、高斯过程:学习、应用与自动相关性确定

本文介绍了高斯过程回归的基本原理及其在实际应用中的关键技术,重点探讨了通过最大化对数似然函数来学习模型超参数的方法,并详细阐述了自动相关性确定(ARD)技术如何用于评估输入变量的重要性。文章涵盖了从协方差函数定义、梯度计算到优化算法的应用流程,并通过流程图和表格形式总结了核心步骤与公式。此外,还讨论了贝叶斯处理方式及异方差问题的建模策略,展示了高斯过程在复杂数据建模中的灵活性与强大能力。

android的专栏 114

【Qt】 获取本机的IP地址、Mac地址

获取IP地址 QString getHostIpAddress() { QString strIpAddress; QList<QHostAddress> ipAddressesList = QNetworkInterface::allAddresses(); // 获取第一个本主机的IPv4地址 int nListSize = ipAddressesList.size(); for (int i = 0; i < nListSize; ++i)

风浪云HH的博客 711

Win11 1 月更新黑屏循环故障技术分析与解决方案

2026年1月30日Windows 11更新引发黑屏循环故障,主要影响2018年前出厂、采用MBR分区及特定BIOS固件的设备,尤其对使用经典版Outlook(POP协议)的用户影响显著。故障表现为系统无限重启黑屏,导致数据访问中断。分析表明,问题源于硬件兼容性、分区格式与系统更新的交互冲突。解决方案包括进入安全模式回滚更新、暂停自动更新、升级驱动/BIOS,以及等待微软官方补丁。建议用户更新前评估硬件兼容性并备份数据,企业环境应建立分阶段更新测试机制。该事件为系统更新风险管理提供了重要参考。

博客 1441

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Qt5获取本机所有网卡IP地址和MAC地址

参考Qt的文档可以看出: [static] QList QNetworkInterface::allAddresses() This convenience function returns all IP addresses found on the host machine. It is equivalent to calling addressEntries() on all the objects returned by allInterfaces() that are in the QNetwork

看看世界看看你 3173

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Qt 获取本机IP地址及Mac地址

QT 获取IP地址及Mac地址

weixin_45590571的博客 1315

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

QT 获取 本机IP地址 MAC地址

QString str1; QHostInfo info = QHostInfo::fromName(QHostInfo::localHostName()); QHostAddress address = info.addresses().first();

zj14's 2482

QT获取本机IP和MAC地址的方法

QNetworkInterface  localInterface =localInterface.interfaceFromName("设备名称 例如 eth0");      QString MAC =localInterface.hardwareAddress()/* "90:FB:A6:11:52:63"*/;     int localNetmask = 0xFFFFFF00;    int localIP ;      for(int i =0; i      {

zhangzhenhu的专栏 1万+

Qt 获取本机的IP地址、MAC地址

Qt 获取本机的IP地址、MAC地址

Tristan_csg的博客 575
上一篇: QSettings使用笔记
下一篇: Qt如何将外部窗口嵌入部件中
前行中的小猪
前行中的小猪 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄10年 4万+粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值