zoukankan      html  css  js  c++  java
  • qt 实现获取网络信息

    最近做智慧农业的项目,在网络配置时要动态获取本机的IP地址以及子网掩码和DNS,研究了一段时间终于有结果

    1.用到网络相关的类要在工程文件.pro里加入下面一句话,告诉编译器加入网络模块

    QT       +=network

    2,用到的Qt的类
    QNetworkInterface :这个类会帮我们获取本机的所有网络接口,存储网络接口的名称以及物理地址等

    QNetworkAddressEntry:可以帮我们存储网络接口的IP地址,子网掩码,以及广播地址等

    一般将这两个类联合起来使用

     QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
            //获取所有网络接口的列表
            foreach(QNetworkInterface interface,list)
            {  //遍历每一个网络接口
                qDebug() << "Device: "<<interface.name();
                //设备名
                qDebug() << "HardwareAddress:"<<interface.hardwareAddress();
                //硬件地址
                QList<QNetworkAddressEntry> entryList = interface.addressEntries();
             //获取IP地址条目列表,每个条目中包含一个IP地址,一个子网掩码和一个广播地址
                foreach(QNetworkAddressEntry entry,entryList)
                {//遍历每一个IP地址条目
                    qDebug()<<"IP Address:"<<entry.ip().toString();
                    //IP地址
                    qDebug()<<"Netmask:"<<entry.netmask().toString();
                    //子网掩码
                    qDebug()<<"Broadcast:"<<entry.broadcast().toString();
                    //广播地址
                }
    
           }

    上面会把计算机中的各种接口信息打印出来,但我们准备在linux系统里获取wifi的网络地址怎么办,其实道理是一样的
    3,

    void networkWidget::getNetworkMsg()
    {
        QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
        foreach(QNetworkInterface interface,list)
    
        {  //遍历每一个网络接口
             qDebug() << "Device: "<<interface.name();
            //设备名
             qDebug() << "HardwareAddress:"<<interface.hardwareAddress();
            //硬件地址
             if(interface.name() == "wlan0")
             {
                 QList<QNetworkAddressEntry> entryList = interface.addressEntries();
                 ipAddrlineEdit->setText(entryList.first().ip().toString());
                 subnetlineEdit->setText(entryList.first().netmask().toString());
                 //ui->lineEdit_3->setText(entryList.first().broadcast().toString());
             }
    
         }
    }

    这样就获得我们想要的IP地址了。

  • 相关阅读:
    算法学习记录单链表
    算法学习记录排序
    算法学习记录图——最小生成树之prim算法
    算法学习记录图——应用之拓扑排序(Topological Sort)
    算法学习记录图(DFS BFS)
    算法学习记录排序——冒泡排序(Bubble Sort)
    算法学习记录图——最小路径之Floyd算法
    自用SqlHelper.cs
    WPF的DataGrid的标题加粗样式
    .NET Framework 4.0不能用sqlite的问题解决方法
  • 原文地址:https://www.cnblogs.com/onlycxue/p/2834673.html
Copyright © 2011-2022 走看看