QT学习:获取本机网络信息
生活随笔
收集整理的這篇文章主要介紹了
QT学习:获取本机网络信息
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
獲取本機網絡信息,具體實現方法如下:
(1)頭文件“networkinformation.h”的具體代碼如下:
(2)源文件“networkinformation.cpp”的具體代碼如下:
#include "networkinformation.h" NetworkInformation::NetworkInformation(QWidget *parent) : QWidget(parent) { hostLabel = new QLabel(tr("主機名:")); LineEditLocalHostName = new QLineEdit; ipLabel = new QLabel(tr("IP 地址:")); LineEditAddress = new QLineEdit; detailBtn = new QPushButton(tr("詳細")); mainLayout = new QGridLayout(this); mainLayout->addWidget(hostLabel,0,0); mainLayout->addWidget(LineEditLocalHostName,0,1); mainLayout->addWidget(ipLabel,1,0); mainLayout->addWidget(LineEditAddress,1,1); mainLayout->addWidget(detailBtn,2,0,1,2); }此時,運行結果如下圖所示:
以上步驟完成了界面,下面開始真正實現獲取本機網絡信息的內容。
(1)在文件“NetworkInformation.pro”中添加如下代碼:
(2)在頭文件“networkinformation.h”中添加如下代碼:
#include <QHostInfo> #include <QNetworkInterface> public: void getHostInformation(); public slots: void slotDetail();(3)在源文件“networkinformation.cpp”中添加代碼。其中,在構造函數的最后添加:
getHostInformation(); connect(detailBtn,SIGNAL(clicked()),this,SLOT(slotDetail())); getHostInformation()函數用于獲取主機信息。具體實現代碼如下: void NetworkInformation::getHostInformation() { QString localHostName = QHostInfo::localHostName(); //獲取本機主機名。QHostInfo提供了一 系列有關網絡信息的靜態函數,可以根據主機名獲取分配的IP地址,也可以根據IP地址獲取相應的 主機名 LineEditLocalHostName->setText(localHostName); QHostInfo hostInfo = QHostInfo::fromName(localHostName); //根據主機名獲取相關主機信息, 包括IP地址等。QHostInfo::fromName()函數通過主機名查找IP地址信息。 QList<QHostAddress> listAddress = hostInfo.addresses(); //獲取主機的IP地址列表 if(!listAddress.isEmpty()) //獲取的主機IP地址列表可能為空。在不為空的情況下使用第一 個IP地址 { LineEditAddress->setText(listAddress.at(2).toString()); } }slotDetail()函數獲取與網絡接口相關的信息,具體實現代碼如下:
void NetworkInformation::slotDetail() { QString detail=""; QList<QNetworkInterface> list=QNetworkInterface::allInterfaces(); //QNetwork Interface 類提供了一 個主機IP地址和網絡接口的列表。 for(int i=0;i<list.count();i++) { QNetworkInterface interface=list.at(i); detail=detail+tr("設備:")+interface.name()+"\n"; //獲取網絡接口的名稱。 detail=detail+tr("硬件地址:")+interface.hardwareAddress()+"\n"; //獲取網絡接口的硬件地址。 QList<QNetworkAddressEntry> entryList=interface.addressEntries(); //每個網絡接口包括0個或多個IP地址,每個IP地址有選擇性地與一個 子網掩碼和(或)一個廣播地址相關聯。QNetworkAddressEntry類存儲了被網絡接口支持的一個IP地址, 同時還包括與之相關的子網掩碼和廣播地址 for(int j=1;j<entryList.count();j++) { QNetworkAddressEntry entry=entryList.at(j); detail=detail+"\t"+tr("IP 地址:")+entry.ip().toString()+"\n"; detail=detail+"\t"+tr("子網掩碼:")+entry.netmask().toString() +"\n"; detail=detail+"\t"+tr("廣播地址:")+entry.broadcast().toString() +"\n"; } } QMessageBox::information(this,tr("Detail"),detail); }運行結果如圖所示:
點擊”詳細“后會彈出如下內容:
總結
以上是生活随笔為你收集整理的QT学习:获取本机网络信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT学习:监视文件和目录变化
- 下一篇: QT学习:基于UDP的网络广播程序