QT-網路通訊篇-獲取本機資訊
阿新 • • 發佈:2019-02-12
今天carry對QT網路通訊的http有了一定的理解,可能瞭解的非常基礎,希望大家多提點意見哈!
QT中的網路程式設計是由Qt Network提供的,它提供了許多類來實現網路應用中的各種功能,下面簡單實現一下獲取本機資訊
1,在UI介面新增如圖控制元件
2,在.pro工程檔案中新增
QT += network
在.h檔案中新增要用到的庫函式
#include <QHostInfo> //可以根據主機名獲取到IP地址,也可以通過IP地址獲取到主機名 #include <QNetworkInterface> //提供主機的IP地址和網路介面列表
3,實現按鈕的槽函式以及獲取本機資訊的成員函式
void getHostInformation();
public slots:
void on_pushButton_clicked();
4,在.cpp的建構函式中呼叫
getHostInformation();類體外定義該函式
4,定義Button的槽函式QString localHostName = QHostInfo::localHostName(); ui->lineEdit->setText(localHostName); //獲取到主機名 QHostInfo hostInfo = QHostInfo::fromName(localHostName); QList<QHostAddress> listAddress = hostInfo.addresses(); //獲得到主機IP地址的列表 if(!listAddress.isEmpty()) { ui->lineEdit_2->setText(listAddress.first().toString()); //使用IP列表的第一個值 }
5,結果如圖QString detail=""; //一個主機的IP和網路介面列表 QList<QNetworkInterface> list=QNetworkInterface::allInterfaces(); for(int i=0;i<list.count();i++) { QNetworkInterface interface=list.at(i); //獲得網路介面的名稱 detail=detail+QString::fromLocal8Bit("裝置:")+interface.name()+"\n"; //獲得網路介面的硬體地址 detail=detail+QString::fromLocal8Bit("硬體地址:")+interface.hardwareAddress()+"\n"; //QNetworkAddressEntry裡包括每個網路介面對應的一個IP地址和子網掩碼以及廣播地址 QList<QNetworkAddressEntry> entryList=interface.addressEntries(); //迴圈列出 for(int j=0;j<entryList.count();j++) { QNetworkAddressEntry entry=entryList.at(j); detail=detail+"\t"+QString::fromLocal8Bit("IP 地址:")+entry.ip().toString()+"\n"; detail=detail+"\t"+QString::fromLocal8Bit("子網掩碼:")+entry.netmask().toString()+"\n"; detail=detail+"\t"+QString::fromLocal8Bit("廣播地址:")+entry.broadcast().toString()+"\n"; } } //在指定父部件前面開啟具有給定標題和文字的資訊訊息框。 QMessageBox::information(this,QString::fromLocal8Bit("網路介面資訊"),detail);