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