欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++?QT實現(xiàn)獲取本機網(wǎng)卡信息

 更新時間:2024年01月24日 09:36:46   作者:bangtan輝  
這篇文章主要為大家詳細介紹了如何利用qt自帶的QNetworkInterface接口以及c++Iphlpapi庫,獲取當(dāng)前windows電腦下的網(wǎng)卡信息,需要的可以參考下

本文將利用qt自帶的QNetworkInterface接口以及c++Iphlpapi庫,獲取當(dāng)前windows電腦下的網(wǎng)卡型號、物理地址、ip地址、子網(wǎng)掩碼、網(wǎng)關(guān)等信息。

#include <QtNetwork/QNetworkInterface>

#include <iostream>
#include <Windows.h>
#include <iphlpapi.h>

#pragma comment(lib, "Iphlpapi.lib")


//獲取對應(yīng)網(wǎng)卡部分信息
BOOL MatchNetcardInfo(UiNetcardVersion &netcardVer)
{
    PIP_ADAPTER_INFO pIPAdapterInfo = new IP_ADAPTER_INFO();
    PIP_ADAPTER_INFO adapters = nullptr;
    ULONG size = sizeof(IP_ADAPTER_INFO);

    int nRet = GetAdaptersInfo(pIPAdapterInfo, &size);


    //pIPAdapterInfo內(nèi)存不夠,重新申請
    if (ERROR_BUFFER_OVERFLOW == nRet)
    {
        delete pIPAdapterInfo;
        pIPAdapterInfo = (PIP_ADAPTER_INFO)new byte[size];
        nRet = GetAdaptersInfo(pIPAdapterInfo, &size);
    }

    if (ERROR_SUCCESS == nRet)
    {
        adapters = pIPAdapterInfo;
        while (adapters)
        {
            //以XX-XX-XX-XX-XX-XX的形式輸出MAC
            char buf[20]{0};
            sprintf(buf, "%02X:%02X:%02X:%02X:%02X:%02X", adapters->Address[0], adapters->Address[1], adapters->Address[2], adapters->Address[3], adapters->Address[4], adapters->Address[5]);

            QString macTmp = buf;
            if(macTmp != netcardVer.macAddr){
                adapters = adapters->Next;
                continue;
            }

            netcardVer.desc = adapters->Description;
            //可能網(wǎng)卡有多IP,因此通過循環(huán)去判斷
            IP_ADDR_STRING* pIpAddrString = &(adapters->IpAddressList);
            do
            {
                netcardVer.ipAddr = pIpAddrString->IpAddress.String;
                netcardVer.netMask = pIpAddrString->IpMask.String;
                netcardVer.gateway = adapters->GatewayList.IpAddress.String;
                pIpAddrString = pIpAddrString->Next;
            } while (pIpAddrString);

            break;
        }
    }

    //釋放分配的內(nèi)存
    if (pIPAdapterInfo)
        delete pIPAdapterInfo;

    return true;
}

//獲取網(wǎng)卡信息
void GetNetcardInfo(){
    QList<UiNetcardVersion> netcardList;
    netcardList.clear();


    QList<QNetworkInterface> interfaces = QNetworkInterface::allInterfaces();
    foreach(const QNetworkInterface& it, interfaces){

        if(QNetworkInterface::Loopback == it.type())
            continue;

        UiNetcardVersion netcardVer;
        //獲取名稱和mac地址
        netcardVer.name = it.humanReadableName();
        netcardVer.macAddr = it.hardwareAddress();
        //獲取型號、ip地址、子網(wǎng)掩碼、網(wǎng)關(guān)
        MatchNetcardInfo(netcardVer);
        //添加到容器
        netcardList.append(netcardVer);
    }
}

到此這篇關(guān)于C++ QT實現(xiàn)獲取本機網(wǎng)卡信息的文章就介紹到這了,更多相關(guān)C++ QT獲取網(wǎng)卡信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言實現(xiàn)五子棋游戲

    C語言實現(xiàn)五子棋游戲

    這篇文章主要為大家詳細介紹了C語言五子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 基于QT實現(xiàn)簡單的鬧鐘

    基于QT實現(xiàn)簡單的鬧鐘

    這篇文章主要為大家詳細介紹了如何基于QT實現(xiàn)一個簡單的鬧鐘小程序,文中的示例代碼講解詳細,具有一定的學(xué)習(xí)價值,有需要的小伙伴可以參考一下
    2025-02-02
  • 一文詳解C++關(guān)鍵字nullptr及與NULL的區(qū)別

    一文詳解C++關(guān)鍵字nullptr及與NULL的區(qū)別

    這篇文章主要給大家詳細介紹了C++關(guān)鍵字nullptr,及?NULL與nullptr的區(qū)別,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • 漫畫講解C語言中最近公共祖先的三種類型

    漫畫講解C語言中最近公共祖先的三種類型

    這篇文章主要總結(jié)了使用C語言查找最近公共祖先的三種方法類型,用漫畫的方式講解原理定義,看上去更生動形象,幫助你更好的理解透徹,快來跟著本文往下看吧
    2021-11-11
  • 為什么要學(xué)習(xí)C語言 C語言優(yōu)勢分析

    為什么要學(xué)習(xí)C語言 C語言優(yōu)勢分析

    不止一個學(xué)生問到我:“老師,為什么我們的應(yīng)用程序設(shè)計要學(xué)C語言而不是別的?C語言不是已經(jīng)過時了嗎?如果現(xiàn)在要寫一個Windows程序,用VB或Dephi開發(fā)多快呀,用C行嗎?退一萬步,為什么選擇C而不是C++呢?”
    2013-07-07
  • 基于Matlab制作一個數(shù)獨求解器

    基于Matlab制作一個數(shù)獨求解器

    這篇文章主要為大家詳細介紹了如何利用Matlab制作一個數(shù)獨求解器,文中的示例代碼講解詳細,對我們學(xué)習(xí)Matlab有一定幫助,需要的可以參考一下
    2022-05-05
  • c語言算術(shù)運算符越界問題解決方案

    c語言算術(shù)運算符越界問題解決方案

    大量的安全漏洞是由于計算機算術(shù)運算的微妙細節(jié)引起的, 具體的C語言, 諸如符號數(shù)和無符號數(shù)之間轉(zhuǎn)換, 算術(shù)運算的越界都會導(dǎo)致不可預(yù)知的錯誤和安全漏洞, 具體的案例數(shù)不勝數(shù).
    2012-11-11
  • C++11?關(guān)鍵字?const?使用小結(jié)

    C++11?關(guān)鍵字?const?使用小結(jié)

    const大致意思是“我承諾不改變這個值”。主要用于說明接口,這樣在把變量傳入函數(shù)時就不必?fù)?dān)心變量會在函數(shù)內(nèi)被改變,本文給大家介紹C++11?關(guān)鍵字?const?使用小結(jié),感興趣的朋友一起看看吧
    2021-12-12
  • VSCode插件開發(fā)全攻略之命令、菜單、快捷鍵

    VSCode插件開發(fā)全攻略之命令、菜單、快捷鍵

    這篇文章主要介紹了VSCode插件開發(fā)全攻略之命令、菜單、快捷鍵,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 使用C語言編寫一個關(guān)機惡搞小程序

    使用C語言編寫一個關(guān)機惡搞小程序

    system函數(shù)的參數(shù)是"shutdown"時,它將會執(zhí)行系統(tǒng)的關(guān)機命令,所以本文將利用這一特點制作一個關(guān)機惡搞小程序,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02

最新評論