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

这篇具有很好参考价值的文章主要介绍了qt-c++进阶1-window、linux下获取本机所有网卡ip信息、根据网卡名获取ip地址。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

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



前言

总结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

目录结构
qt获取网关地址,qt进阶编程,qt,linux,c++

代码示例:

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;
    }
}

运行截图:
qt获取网关地址,qt进阶编程,qt,linux,c++

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


总结

这里只是以qt-c++总结出获取网卡信息的方法,后续会总结出c、c++获取网卡ip信息的多种方法,持续更新中…文章来源地址https://www.toymoban.com/news/detail-636035.html

到了这里,关于qt-c++进阶1-window、linux下获取本机所有网卡ip信息、根据网卡名获取ip地址。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt 获取本机 ip地址方法 获取客户端ip和端口的方法

    上述函数返回本机所有IPv4的ip地址列表,比如192.168.1.10|192.166.1.95 其它方法=》 获取客户端IP地址:

    2024年02月14日
    浏览(30)
  • Python获取局域网内所有机器IP地址与网卡MAC地址

    已发相关文章请参考Python获取本机所有网卡的MAC地址 本文代码使用ARP协议获取局域网内所有计算机的IP地址与MAC地址,思路是使用系统命令arp获取ARP表并生成文本文件,然后从文件中读取和解析信息。 import os from socket import gethostbyname, gethostname # 获取本机IP地址 host = gethostby

    2023年04月10日
    浏览(29)
  • qt-C++笔记之打印所有发生的事件

    code review! 在Qt C++中,若要打印所有发生的事件,您可以通过重写 QObject 的 event 函数或者 QApplication 的 notify 函数来实现。这两个方法都可以截获事件循环中的事件,但是通常更推荐使用 notify 方法,因为它可以捕获到传递给任何对象的所有事件。 使用 QApplication 的 notify 方法

    2024年02月20日
    浏览(28)
  • Shell脚本中获取本机ip地址,Linux获取本地ip地址

    在 Shell 脚本中获取本机 IP 地址可以通过多种方式实现,这里介绍三种常用的方法: 1. 使用 ifconfig 命令获取本机 IP 地址 ifconfig 命令可以获取本机网卡的配置信息,包括 IP 地址。可以通过 grep 命令过滤出 IP 地址信息,再使用 awk 命令提取出具体的 IP 地址。示例代码如下:

    2024年02月11日
    浏览(42)
  • Linux c语言获取本机网关 ip 地址

    这篇文章写了获取本机的ip地址和子网掩码:Linux c语言获取本机 ip、子网掩码 关于Netlink套接字请参考:Linux 网络之netlink 简介 Linux Netlink套接字是一种用于在Linux内核和用户空间之间进行通信的机制。它是Linux内核中的一种通信协议,用于让用户空间程序与内核进行交互。使用

    2024年02月07日
    浏览(36)
  • Linux c语言获取本机 ip、子网掩码

    ifconfig 命令查询本机的网络接口名称,然后运行程序时加上输入参数:网络接口名称。 使用 ioctl() 函数获取本机IP地址的方法。该方法通过查询指定网络接口的IP地址,获取本机的IP地址。 (1)创建一个基于IP协议的socket。 创建了一个套接字,使用了 socket() 系统调用。socke

    2024年02月16日
    浏览(27)
  • window bat脚本获取想要的物理网卡的真实IP地址

    电脑存在虚拟网卡以及真实的物理网卡,想使用bat脚本获取真正的物理网卡的IP地址 可以使用wmic 如下命令各个网卡的IP地址, IPEnabled=TRUE ,表示连接上网络的网卡 会输出类似如下内容 根据输出的内容信息,我们可以增加筛选条件,把电脑的物理网卡的MAC地址加入筛选逻辑,

    2024年02月15日
    浏览(29)
  • java:获取本机IP,Linux环境下使用InetAddress.getLocalHost()方法获得127.0.0.1

    知道InetAddress.getLocalHost()方法是可以获取本地ip的,但是在mac电脑上执行的时候,偶尔会得到127.0.0.1的输出,这样拿到本地ip很不稳定,感觉就很不靠谱了 代码 mac上输出 在 windows环境 : 使用InetAddress.getLocalHost()方法看似正常能获得本地ip,实际也有不确定性( 多网卡协同工作环

    2024年02月01日
    浏览(26)
  • Linux C 获取主机网卡名及 IP 的几种方法

      在进行 Linux 网络编程时,经常会需要获取本机 IP 地址,除了常规的读取配置文件外,本文罗列几种个人所知的编程常用方法,仅供参考,如有错误请指出。    Linux 下可以使用 ioctl() 函数以及结构体 struct ifreq 和结构体 struct ifconf 来获取网络接口的各种信息。具体过程

    2024年02月14日
    浏览(33)
  • Gin:获取本机IP,获取访问IP

     获取本机IP  获取访问IP 参考来源: go+gin获取本机ip和获取访问ip - 简书

    2024年01月21日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包