系列文章目录
例如:第一章 主要是通过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_OBJECTpublic: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信息的多种方法,持续更新中…