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