qt-c++进阶1-window、linux下获取本机所有网卡ip信息、根据网卡名获取ip地址。

news2024/9/27 9:31:13

系列文章目录

例如:第一章 主要是通过qt-c++实现获取本机电脑的网卡信息或者是IP信息


文章目录

  • 系列文章目录
  • 前言
  • 一、获取本机网卡IP信息
    • 1.1 获取ip地址方法
    • 1.2 代码实例
  • 总结


前言

总结c++获取本机网卡信息的方法
第一章:适用于windows操作系统、linux操作系统

  1. QHostAddress解析获取本机IPV4地址
  2. QNetworkInterface解析获取所有网关信息(IP地址(IPV4和IPV6)子网掩码广播地址);

持续更新中…


一、获取本机网卡IP信息

本章主要是通过qt-c++实现获取本机电脑的网卡信息或者是IP信息

获取windows本地所有网关IP的方法
获取本地指定网卡名的IP的方法。

1.1 获取ip地址方法

  1. QHostAddress解析获取本机IPV4地址
  2. QNetworkInterface解析获取所有网关信息(IP地址(IPV4和IPV6)子网掩码广播地址);
  3. 根据上面的方法,总结出,根据本机网卡名去获取相应的IPV4地址

1.2 代码实例

提供3个函数在widget.h中,在widget.cpp分别对其实现,具体如下:

void getHostIP(); //获取本机ipv4地址
void getAllIP(); //获取本机所有网卡信息
void getDesignateIP(); //根据网卡名获取指定网卡ip信息,例如下面示例获取VMware Network Adapter VMnet8网卡的ip

目录结构
在这里插入图片描述

代码示例:

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr);
    
    void getHostIP();//获取本机ipv4地址
    void getAllIP();//获取本机所有网卡信息
    void getDesignateIP();//获取本机的制定ip信息

    ~Widget();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QList>
#include <QNetworkInterface>
#include <QDebug>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    getHostIP();
    getAllIP();
}

Widget::~Widget()
{
    delete ui;
}

void Widget::getDesignateIP()
{
    QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
    //获取所有网络接口的列表
    foreach(QNetworkInterface interface,list)
    {
        QList<QNetworkAddressEntry> entryList = interface.addressEntries();
        //获取IP地址条目列表,每个条目中包含一个IP地址,一个子网掩码和一个广播地址
        if(interface.humanReadableName() == "VMware Network Adapter VMnet8")
        {
            foreach(QNetworkAddressEntry entry,entryList)
            {
                if(entry.ip()!=QHostAddress::LocalHost && entry.ip().toIPv4Address())
                {
                    //设备名
                    qDebug() << "Device: "<<interface.name();
                    qDebug() << "Device: "<<interface.humanReadableName();
                    //IP信息
                    qDebug()<<"IP Address: "<<entry.ip().toString();              
                }
            }
        }
    }
}

void Widget::getHostIP()
{
    QList<QHostAddress> list = QNetworkInterface::allAddresses();
    foreach (QHostAddress address, list)
    {
        if(address.protocol() == QAbstractSocket::IPv4Protocol)
            //我们使用IPv4地址
            qDebug()<<address.toString();
    }
     qDebug()<<endl;
}

void Widget::getAllIP()
{
    QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
    //获取所有网络接口的列表
    foreach(QNetworkInterface interface,list)
    {  //遍历每一个网络接口
        qDebug() << "Device: "<<interface.name();
        //设备名
        qDebug() << "HardwareAddress: "<<interface.hardwareAddress();
        //硬件地址
        QList<QNetworkAddressEntry> entryList = interface.addressEntries();
        //获取IP地址条目列表,每个条目中包含一个IP地址,一个子网掩码和一个广播地址
        foreach(QNetworkAddressEntry entry,entryList)
        {//遍历每一个IP地址条目
            qDebug()<<"IP Address: "<<entry.ip().toString();
            //IP地址
            qDebug()<<"Netmask: "<<entry.netmask().toString();
            //子网掩码
            qDebug()<<"Broadcast: "<<entry.broadcast().toString();
            //广播地址
        }
        qDebug()<<endl;
    }
}

运行截图:
在这里插入图片描述

参考链接:https://www.cnblogs.com/liushui-sky/p/6479110.html


总结

这里只是以qt-c++总结出获取网卡信息的方法,后续会总结出c、c++获取网卡ip信息的多种方法,持续更新中…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/376102.html

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

相关文章

中级嵌入式系统设计师2015下半年下午应用技能试题

中级嵌入式系统设计师2015下半年下午试题 试题一 阅读以下关于某嵌入式系统设计的说明,回答下列问题。 [说明] 某公司承接了某嵌入式系统的研制任务。该嵌入式系统由数据处理模块、系统管理模块、FC网络交换模块和智能电源模块组成,系统组成如图1所示。数据处理模块处理系统…

Linux 练习三 (Makefile工程管理器)

文章目录Makefile工程管理器第一个makefile&#xff1a;编写两个.c源文件&#xff0c;并且让一个调用另外一个&#xff0c;使用makefile建立依赖&#xff0c;生成可执行文件&#xff0c;并执行。伪目标变量预定义变量和自动变量通配符和模式匹配内置函数循环指定makefile文件综…

js数组格式字符串处理

文章目录一. 前言二. 数组还原1. 方法一2. 方法二3. 方法三4. 方法四一. 前言 由于数据传输的问题我们常常在请求后拿到数组格式的字符串&#xff0c;一般情况分为以下四种&#xff1a; let str1 ["a","b","c","d"]; // 类型一 let…

【异常解决】The coordinator is not available

问题 最近上线跑了一个flink任务&#xff0c;运行不久&#xff0c;就会挂掉&#xff0c;初步查看日志报错如下 WARN org.apache.flink.connector.kafka.source.reader.KafkaSourceReader [] - Failed to commit consumer offsets for checkpoint 1 org.apache.kafka.clients…

IGBT窄脉冲现象

IGBT窄脉冲现象 tips&#xff1a;资料来自知乎 英飞凌《IGBT窄脉冲现象解读》 IGBT窄脉冲现象 1.什么是窄脉冲现象? 2.窄脉冲现象的原因 3.双脉冲测试IGBT窄脉冲开通 4.FWD窄脉冲开通 1.什么是窄脉冲现象? IGBT作为一种功率开关&#xff0c;从门级信号到器件开关过程…

用Python制作邮件检测器

github地址&#xff1a; https://github.com/CaLlMeErIC/MailDetective 因为需求需要写一个简单的邮件检测系统的框架&#xff0c;这里记录下思路 首先第一反应,这个检测系统不应该是各个邮件收件系统都有自带的吗&#xff0c;于是搜索了下是否有相关的邮件检测开源软件&#…

行测-判断推理-图形推理-样式规律-属性规律-对称性

中心对称&#xff1a;可以看作&#xff0c;图上的每一个点&#xff0c;都能关于中心点&#xff0c;在图上找到另一个对称的点五个图都是轴对称图形&#xff0c;只有答案C是轴对称图形选C都是中心对称图形选A1 3 5中心对称2 4 6轴对称中心对称选B对称轴顺时针45旋转选A对称轴的数…

极智项目 | 实战pytorch arcface人脸识别

欢迎关注我的公众号 [极智视界]&#xff0c;获取我的更多经验分享 大家好&#xff0c;我是极智视界&#xff0c;本文介绍 实战pytorch arcface人脸识别&#xff0c;并提供完整项目源码。 本文介绍的实战arcface人脸识别项目&#xff0c;提供完整的可以一键训练、测试的项目工程…

微信公众号历史作品定向采集

最近有遇到微信公众号历史作品采集的需求,这里做一下记录, 登录自己注册好的的微信公众号后台进入创作界面,点击右上角的引用: 弹出如下界面: 选择查找公众号文章,输入要查找的公众号: 回车: 同时就可以打开F12开始抓包,选择公众号点击进入: appmsg?action=li…

golang 整合antlr语法校验

1. 背景 在项目中我们可能会遇到表达式检索的场景&#xff0c;例如&#xff0c;输入以下表达式检索&#xff0c;需要解析表达式并得到检索结果。 ip"192.168.1.3" && (port"80" || protocol"http")此时&#xff0c;我们需要对语法进行…

Linux启动过程

theme: channing-cyan 两种启动方式 传统启动方式&#xff08;LEGACYMBR&#xff09; 指传统BIOS启动方式&#xff0c;存在一些不足&#xff1a;比如最大只支持2TB磁盘&#xff0c;磁盘最多四个分区&#xff0c;且不支持图形操作 UEFIGPT方式 是新式的启动方式&#xff0c…

数学小课堂:三次方程(定理发明的过程)

文章目录 引言I 一元三次方程1.1 通解发明权之争1.2 费拉里-塔尔塔利亚公式1.3 Mathematica1.4 数学定理发明的过程引言 学习数学,最重要的是把实际问题变成数学问题,然后知道如何利用各种软件工具来解决。 方程是一个能把具体问题,等量转化成类型问题的好工具。 一元三次方…

Jetson AGX Orin安装Anaconda、Cuda、Cudnn、Pytorch最全教程

文章目录一&#xff1a;Anaconda安装二&#xff1a;Cuda、Cudnn安装三&#xff1a;Pytorch安装一&#xff1a;Anaconda安装 Jetson系列边缘开发板&#xff0c;其架构都是arm64&#xff0c;而不是传统PC的amd64&#xff0c;深度学习的环境配置方法大不相同。想要看amd64的相关环…

智能家居项目(六)之摄像头模块

目录 一、树莓派mipg-streamer实现监控功能调试 1、实现基本思路 2、安装摄像头模块 2.1、在安装sudo apt-get install libv4l-dev 的命令时报错 3、开启摄像头 以下内容是针对树莓派是stretch版本的修改办法&#xff1a; 一、树莓派mipg-streamer实现监控功能调试 1、…

有哪些前端面试题是必须要掌握的

对浏览器的缓存机制的理解 浏览器缓存的全过程&#xff1a; 浏览器第一次加载资源&#xff0c;服务器返回 200&#xff0c;浏览器从服务器下载资源文件&#xff0c;并缓存资源文件与 response header&#xff0c;以供下次加载时对比使用&#xff1b; 下一次加载资源时&#x…

Flow API搭建指南

搭建Flow API&#xff0c;首先需要安装知行之桥EDI系统&#xff0c;注意&#xff0c;Flow API为新增功能&#xff0c;仅在2022版本&#xff08;8336&#xff09;及以后支持&#xff0c;如果你发现正在使用的产品没有这个功能&#xff0c;可以在我们官网下载最新版本或者联系我们…

将企业文件共享解决方案与数据丢失防护配对

您的企业文件共享解决方案是否足够&#xff1f;企业文件共享解决方案已经是一种加密移动中敏感数据的好方法&#xff0c;但仅加密是不够的。 您能否确保不会意外传输敏感信息&#xff1f;您是否可以审核谁发送了什么&#xff1f;最后但并非最不重要的一点是&#xff0c;您是否…

【Autoware】2小时安装Autoware1.13(保姆级教程)

前言&#xff1a;ROS的出现使得机器人软件开发更加快速和模块化&#xff0c;在此基础上&#xff0c;Autoware.ai开源项目可以让我们很容易地将一套完整的自动驾驶软件部署到我们的测试车辆上&#xff0c;并见证它跑起来&#xff01; 文章目录1.Autoware简介2.电脑软硬件配置要求…

爆肝更新 Python 100道基础入门练习题(附答案)

前言 大家早好、午好、晚好吖 ❤ ~ 更多精彩内容、资源皆可点击文章下方名片获取此处跳转 实例001&#xff1a;数字组合 题目&#xff1a; 有四个数字&#xff1a;1、2、3、4&#xff0c;能组成多少个互不相同且无重复数字的三位数&#xff1f;各是多少&#xff1f; 程序分…

合宙入门教程之luat开发教程

合宙入门教程准备工作连接电脑建工程与烧录测试demo之main.lua实验现象准备工作 1.开发板&#xff08;1块&#xff09; 2.Luatools_v2.exe &#xff08;烧录固件软件&#xff09; 3.USB驱动 跳转合宙官网链接 连接电脑 1.首先安装合宙开发工具&#xff0c;其次安装USB驱动。…