Qt-获取网络接口信息的综合示例
在前面的文章中介绍了与 获 取 本 机 网 络 信 息 相 关 的 类 常 用 的 有 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 }