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()+"
";
        detail+=tr("硬件地址:")+interface.hardwareAddress()+"
";
        QList<QNetworkAddressEntry> entrylist=interface.addressEntries();
        QList<QNetworkAddressEntry>::iterator j;
        for(j=entrylist.begin();j!=entrylist.end();j++)
        {
            //
            QNetworkAddressEntry entry=*j;
            detail+="	"+tr("IP地址:")+entry.ip().toString()+"
";
            detail+="	"+tr("子网掩码:")+entry.netmask().toString()+"
";
            detail+="	"+tr("广播地址:")+entry.broadcast().toString()+"
";
        }
        QMessageBox::information(this,"主机信息",detail);
    }
}
原文地址:https://www.cnblogs.com/zhanggaofeng/p/6007608.html