系列文章目录
例如:第一章 主要是通过qt-c++实现获取本机电脑的网卡信息或者是IP信息
文章目录
- 系列文章目录
- 前言
- 一、获取本机网卡IP信息
- 1.1 获取ip地址方法
- 1.2 代码实例
 
- 总结
前言
总结c++获取本机网卡信息的方法
 第一章:适用于windows操作系统、linux操作系统
- 用QHostAddress解析获取本机IPV4地址;
- 用QNetworkInterface解析获取所有网关信息(IP地址(IPV4和IPV6)、子网掩码、广播地址);
持续更新中…
一、获取本机网卡IP信息
本章主要是通过qt-c++实现获取本机电脑的网卡信息或者是IP信息
获取windows本地所有网关IP的方法
获取本地指定网卡名的IP的方法。
1.1 获取ip地址方法
- 用
QHostAddress解析获取本机IPV4地址;- 用
QNetworkInterface解析获取所有网关信息(IP地址(IPV4和IPV6)、子网掩码、广播地址);- 根据上面的方法,总结出,根据本机网卡名去获取相应的
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信息的多种方法,持续更新中…



















