zoukankan      html  css  js  c++  java
  • QT获取ip和mac,区分虚拟机、wifi、宽带

     00:50:56:C0:00:0100:50:56:C0:00:08  是虚拟机的MAC地址,可以排除

    正常情况下,wifi和宽带只有一个工作,所以可以QNetworkAddressEntry.ip().toString()获取ip,QNetworkAddressEntry.hardwareAddress()获取MAC地址。

    排除其它情况,只留wifi和宽带,可以通过QNetworkInterface.humanReadableName()排除

    QString XXX::gethostIp()
    {
        QString strIpAddress;
    
        QList<QNetworkInterface> interfaceList = QNetworkInterface::allInterfaces();
        foreach(QNetworkInterface interfaceItem, interfaceList)
        {
            if(interfaceItem.flags().testFlag(QNetworkInterface::IsUp)
                    &&interfaceItem.flags().testFlag(QNetworkInterface::IsRunning)
                    &&interfaceItem.flags().testFlag(QNetworkInterface::CanBroadcast)
                    &&interfaceItem.flags().testFlag(QNetworkInterface::CanMulticast)
                    &&!interfaceItem.flags().testFlag(QNetworkInterface::IsLoopBack)
                    &&interfaceItem.hardwareAddress()!="00:50:56:C0:00:01"
                    &&interfaceItem.hardwareAddress()!="00:50:56:C0:00:08"
                    &&
                    (interfaceItem.humanReadableName()=="WLAN"
                    ||
                    interfaceItem.humanReadableName()=="以太网"))
            {
                QList<QNetworkAddressEntry> addressEntryList=interfaceItem.addressEntries();
                foreach(QNetworkAddressEntry addressEntryItem, addressEntryList)
                {
                    if(addressEntryItem.ip().protocol()==QAbstractSocket::IPv4Protocol)
                    {
    //                    qDebug()<<"------------------------------------------------------------";
    //                    qDebug()<<"Adapter Name:"<<interfaceItem.name();
    //                    qDebug()<<"Adapter Name:"<<interfaceItem.index();
    //                    qDebug()<<"Adapter Name:"<<interfaceItem.humanReadableName();
    //                    qDebug()<<"Adapter Address:"<<interfaceItem.hardwareAddress();
    //                    qDebug()<<"IP Address:"<<addressEntryItem.ip().toString();
    //                    qDebug()<<"IP Mask:"<<addressEntryItem.netmask().toString();
    //                    qDebug()<<"IP interfaceItem.hardwareAddress():"<<interfaceItem.hardwareAddress();
    
                        strIpAddress = addressEntryItem.ip().toString();
                    }
                }
            }
        }
    
         return strIpAddress;
    }
    
    
    QString XXX::gethostMac()
    {
        QString strMacAddr = "";
    
        QList<QNetworkInterface> interfaceList = QNetworkInterface::allInterfaces();
        foreach(QNetworkInterface interfaceItem, interfaceList)
        {
            if(interfaceItem.flags().testFlag(QNetworkInterface::IsUp)
                    &&interfaceItem.flags().testFlag(QNetworkInterface::IsRunning)
                    &&interfaceItem.flags().testFlag(QNetworkInterface::CanBroadcast)
                    &&interfaceItem.flags().testFlag(QNetworkInterface::CanMulticast)
                    &&!interfaceItem.flags().testFlag(QNetworkInterface::IsLoopBack)
                    &&interfaceItem.hardwareAddress()!="00:50:56:C0:00:01"
                    &&interfaceItem.hardwareAddress()!="00:50:56:C0:00:08"
                    &&
                    (interfaceItem.humanReadableName()=="WLAN"
                    ||
                    interfaceItem.humanReadableName()=="以太网"))
            {
                QList<QNetworkAddressEntry> addressEntryList=interfaceItem.addressEntries();
                foreach(QNetworkAddressEntry addressEntryItem, addressEntryList)
                {
                    if(addressEntryItem.ip().protocol()==QAbstractSocket::IPv4Protocol)
                    {
    //                    qDebug()<<"------------------------------------------------------------";
    //                    qDebug()<<"Adapter Name:"<<interfaceItem.name();
    //                    qDebug()<<"Adapter Name:"<<interfaceItem.index();
    //                    qDebug()<<"Adapter Name:"<<interfaceItem.humanReadableName();
    //                    qDebug()<<"Adapter Address:"<<interfaceItem.hardwareAddress();
    //                    qDebug()<<"IP Address:"<<addressEntryItem.ip().toString();
    //                    qDebug()<<"IP Mask:"<<addressEntryItem.netmask().toString();
    //                    qDebug()<<"IP interfaceItem.hardwareAddress():"<<interfaceItem.hardwareAddress();
    
                        strMacAddr = interfaceItem.hardwareAddress();
                    }
                }
            }
        }
    
    
        return strMacAddr;
    }

    https://blog.csdn.net/u011430225/article/details/79426217

  • 相关阅读:
    unity3d 中文乱码解决方法——cs代码文件格式批量转化UTF8
    Unity SteamVR插件集成
    Unity3D Layer要点
    Unity利用Sapi进行windows语音开发
    Scratch入门课程(1)——把工具准备好
    【blockly教程】Blockly编程案例
    【blockly教程】第六章 Blockly的进阶
    【blockly教程】第五章 循环结构
    【blockly教程】第三章Blockly顺序程序设计
    【blockly教程】第四章 Blockly之选择结构
  • 原文地址:https://www.cnblogs.com/xiang--liu/p/13278073.html
Copyright © 2011-2022 走看看