日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT学习:获取本机网络信息

發(fā)布時間:2024/9/30 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT学习:获取本机网络信息 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

獲取本機(jī)網(wǎng)絡(luò)信息,具體實現(xiàn)方法如下:
(1)頭文件“networkinformation.h”的具體代碼如下:

#include <QWidget> #include <QLabel> #include <QPushButton> #include <QLineEdit> #include <QGridLayout> #include <QMessageBox> class NetworkInformation : public QWidget { Q_OBJECT public: NetworkInformation(QWidget *parent = 0); ~NetworkInformation(); private: QLabel *hostLabel; QLineEdit *LineEditLocalHostName; QLabel *ipLabel; QLineEdit *LineEditAddress; QPushButton *detailBtn; QGridLayout *mainLayout; };

(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”中添加如下代碼:

QT += network

(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。