Qt-获取网络接口信息的综合示例

时间:2021-06-26 15:23:34

在前面的文章中介绍了与 获 取 本 机 网 络 信 息 相 关 的 类 常 用 的 有 4 个 , 分 别 是 : QHostAddress, QHostInfo, QNetworkInterface 和 QNetworkAddressEntry。这4个类就不详细介绍了,本文我们主要使用这4个类中的常用方法来获取有关网络接口的相关信息。

 

 1 #include "mainwindow.h"
 2 
 3 #ifdef IR_FUNC_TEST
 4 #include <QDebug>
 5 #include <QHostInfo>
 6 #include <QHostAddress>
 7 #include <QNetworkInterface>
 8 #include <QNetworkAddressEntry>
 9 
10 #endif
11 
12 MainWindow::MainWindow(QWidget *parent)
13     : QMainWindow(parent)
14 {
15 
16 #ifdef IR_FUNC_TEST
17     // 获取主机名
18     QString localHostName = QHostInfo::localHostName();
19     qDebug() << "主机名: " << localHostName;
20 
21     // 获取本主机上的IP地址列表
22     QHostInfo hostInfo = QHostInfo::fromName(localHostName);
23     QList<QHostAddress> addrList = hostInfo.addresses();
24     qDebug() << "本主机上的IP地址列表,总计: " << addrList.count();
25     foreach (QHostAddress var, addrList) {
26         qDebug() << var.toString();
27     }
28 
29     // 获取本机的网络接口列表
30     QList<QNetworkInterface> ifaceList = QNetworkInterface::allInterfaces();
31     for (int i = 0; i < ifaceList.count(); i++){
32         QNetworkInterface var = ifaceList.at(i);
33         qDebug() << tr("########## 设备%1 ############").arg(i);
34         qDebug() << tr("接口名称:") << var.humanReadableName();
35         qDebug() << tr("设备名称:") << var.name();
36         qDebug() << tr("硬件地址:") << var.hardwareAddress();
37 
38         // 读取一个IP地址的关联信息列表
39         QList<QNetworkAddressEntry> entryList = var.addressEntries();
40         foreach(QNetworkAddressEntry entry, entryList){
41             qDebug() << "IP: " << entry.ip().toString();
42             qDebug() << "子网掩码:" << entry.netmask().toString();
43             qDebug() << "广播地址:" << entry.broadcast().toString();
44         }
45     }
46 
47 #endif
48 }
49 
50 MainWindow::~MainWindow()
51 {
52 
53 }