00:50:56:C0:00:01、00: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
博客地址:https://blog.csdn.net/xiang__liu,https://www.cnblogs.com/xiang--liu/