程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Qt-獲取主機網絡信息之QNetworkInterface

Qt-獲取主機網絡信息之QNetworkInterface

編輯:C++入門知識

 

      QNetworkInterface類提供了一個主機IP地址和網絡接口的列表。

      QNetworkInterface表示了當前程序正在運行時與主機綁定的一個網絡接口。每個網絡接口可能包含0個或者多個IP地址,每個IP地址都可選擇性地與一個子網掩碼和(或)一個廣播地址相關聯。這樣的列表可以通過QNetworkInterface的addressEntries()方法獲得。作為一種可選的方案是,當子網掩碼或者廣播地址不是必須的,可以使用allAddresses()便捷函數來僅僅獲得IP地址。

 

注:QNetworkAddressEntry類存儲了被網絡接口所支持的一個IP地址,同時還有與之相關的子網掩碼和廣播地址。

 

QNetworkInterface還使用hardwareAddress()方法報告接口的硬件地址。

 

不是所有的操作系統都支持報告這些所有的特性。只有IPv4地址可以保證在所有平台上都能被這個類列舉出來,尤其是IPv6地址的列舉目前只支持Windows XP及相關版本、Linux、MacOS和BSDs。

 

相關參考:QNetworkAddressEntry.

 

成員函數:allAddresses() [static]

這個便利函數返回在主機上面找到的所有的IP地址。它相當於對allInterfaces()返回的所有對象調用addressEntries()來獲取QHostAddress對象列表,然後對這些對象調用QHostAddress::ip()方法。

 1 #include "mainwindow.h"
 2 #include <QHostAddress>
 3 #include <QNetworkInterface>
 4 #include <QNetworkAddressEntry>
 5 #include <QDebug>
 6 
 7 MainWindow::MainWindow(QWidget *parent)
 8     : QMainWindow(parent)
 9 {
10     QList<QHostAddress> list = QNetworkInterface::allAddresses();
11 
12     for (int i = 0; i < list.size(); i++)
13     {
14         qDebug() << list.at(i);
15     }
16 }

 

成員函數:allInterfaces() [static]

返回一個在主機上找到的所有網絡接口的列表。如果查找失敗,則返回一個0個元素的列表。

 1 #include "mainwindow.h"
 2 #include <QHostAddress>
 3 #include <QNetworkInterface>
 4 #include <QNetworkAddressEntry>
 5 #include <QDebug>
 6 
 7 MainWindow::MainWindow(QWidget *parent)
 8     : QMainWindow(parent)
 9 {
10     QList<QNetworkInterface> interface = QNetworkInterface::allInterfaces();
11 
12     for (int i = 0; i < interface.size(); i++)
13     {
14         qDebug() << interface.at(i);
15         QNetworkInterface item = interface.at(i);
16         QList<QNetworkAddressEntry> entryList = item.addressEntries();
17         for (int j = 0; j < entryList.size(); j++)
18         {
19             qDebug() << "Item #" << j << entryList.at(j).ip();
20         }
21     }
22 }

 

成員函數:hardwareAddress() const

返回這個接口的底層硬件地址。對於以太網接口,這將是一個用字符串表示的MAC地址,通過冒號來分隔。其他接口類型可能使用其他類型的硬件地址。實現不要依靠這個函數來返回一個合法的MAC地址。

 1 #include "mainwindow.h"
 2 #include <QHostAddress>
 3 #include <QNetworkInterface>
 4 #include <QNetworkAddressEntry>
 5 #include <QDebug>
 6 
 7 MainWindow::MainWindow(QWidget *parent)
 8     : QMainWindow(parent)
 9 {
10     QList<QNetworkInterface> interface = QNetworkInterface::allInterfaces();
11 
12     for (int i = 0; i < interface.size(); i++)
13     {
14         QNetworkInterface item = interface.at(i);
15         qDebug() << item.hardwareAddress();
16     }
17 }

 

參考資料:《獲取網絡接口信息》-MyNote

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved