• 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

  • 相关阅读:
    git提交到项目中自动部署
    vue纯前端导入导出excel
    VMware Workstation pro14 虚拟机下安装CentOS6.5图文教程
    [正睿集训2021] 杂题再讲
    #4 CF568E & CF613E & CF587D
    Atcoder Grand Contest 009&010
    [省选集训2022] 模拟赛4
    #3 CF536D & CF538G & CF559E
    [省选集训2022] 模拟赛7
    Atcoder Grand Contest 007&008
  • 原文地址:https://www.cnblogs.com/xiang--liu/p/13278073.html
Copyright © 2020-2023  润新知