亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

#include <QtNetwork/QNetworkInterface>

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

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


//獲取對(duì)應(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)存不夠,重新申請(qǐng)
    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,因此通過(guò)循環(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();
        //獲取型號(hào)、ip地址、子網(wǎng)掩碼、網(wǎng)關(guān)
        MatchNetcardInfo(netcardVer);
        //添加到容器
        netcardList.append(netcardVer);
    }
}

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

相關(guān)文章

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

    C語(yǔ)言實(shí)現(xiàn)五子棋游戲

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

    基于QT實(shí)現(xiàn)簡(jiǎn)單的鬧鐘

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

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

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

    漫畫(huà)講解C語(yǔ)言中最近公共祖先的三種類(lèi)型

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

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

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

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

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

    c語(yǔ)言算術(shù)運(yùn)算符越界問(wèn)題解決方案

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

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

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

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

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

    使用C語(yǔ)言編寫(xiě)一個(gè)關(guān)機(jī)惡搞小程序

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

最新評(píng)論