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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

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

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

獲取本機網絡信息,具體實現方法如下:
(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("主機名:")); 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”中添加如下代碼:

QT += network

(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学习:获取本机网络信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。