QT 網絡編程一


QT如果要進行網絡編程首先需要在.pro中添加如下代碼:QT += network
在頭文件中包含相關頭文件
#include <QHostInfo>
#include <QNetworkInterface>

void Widget::btn_click()
{
    //獲取主機名稱
    QString s=QHostInfo::localHostName();
    //根據主機名獲取主機其他信息
    QHostInfo info=QHostInfo::fromName(s);
    /*獲取主機所有的網絡地址,IP地址跟網卡有關系,一個主機可能存在多個網卡或者虛擬機網卡*/
    QList<QHostAddress> list=info.addresses();
    if(!list.isEmpty())
    {
        /*設置一個迭代器*/
        QList<QHostAddress>::iterator i;
        for(i=list.begin();i!=list.end();i++)
        {
            QMessageBox::information(this,"主機地址",(*i).toString());
        }
    }
    label1->setText(s);
}

 

void Widget::btn_click()
{
    QString detail;
    /*得到本機所有的網絡接口信息*/
    QList<QNetworkInterface> list=QNetworkInterface::allInterfaces();
    QList<QNetworkInterface>::iterator i;
    for(i=list.begin();i!=list.end();i++)
    {
        QNetworkInterface interface=*i;
        /*獲取設備名字*/
        detail=tr("設備:")+interface.name()+"\n";
        detail+=tr("硬件地址:")+interface.hardwareAddress()+"\n";
        QList<QNetworkAddressEntry> entrylist=interface.addressEntries();
        QList<QNetworkAddressEntry>::iterator j;
        for(j=entrylist.begin();j!=entrylist.end();j++)
        {
            //
            QNetworkAddressEntry entry=*j;
            detail+="\t"+tr("IP地址:")+entry.ip().toString()+"\n";
            detail+="\t"+tr("子網掩碼:")+entry.netmask().toString()+"\n";
            detail+="\t"+tr("廣播地址:")+entry.broadcast().toString()+"\n";
        }
        QMessageBox::information(this,"主機信息",detail);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM