1. 程式人生 > >QT-網路通訊篇-獲取本機資訊

QT-網路通訊篇-獲取本機資訊

                今天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();
     類體外定義該函式
 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列表的第一個值
    }
4,定義Button的槽函式
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);
 5,結果如圖