最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C/C++通過(guò)IP獲取局域網(wǎng)網(wǎng)卡MAC地址

 更新時(shí)間:2025年02月06日 10:01:02   作者:木瞳  
這篇文章主要為大家詳細(xì)介紹了C++如何通過(guò)Win32API函數(shù)SendARP從IP地址獲取局域網(wǎng)內(nèi)網(wǎng)卡的MAC地址,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

C/C++通過(guò)IP獲取局域網(wǎng)網(wǎng)卡MAC地址

通過(guò)win32 SendARP獲取MAC地址

代碼

#include <winsock2.h>
#include <iostream>
#include<iphlpapi.h>
 
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"iphlpapi.lib")
 
/**
 * 通過(guò)局域網(wǎng)ip獲取網(wǎng)卡MAC地址
*/
std::string GetMacAddress(std::string destIpStr)
{
    IPAddr srcIp = 0;
    IPAddr destIp = 0;
    ULONG mac[2];
    ULONG macLen = 6;
    destIp = inet_addr(destIpStr.c_str());
    memset(mac,0xff,sizeof(mac));
    SendARP(destIp,srcIp,(PVOID)mac,(PULONG)&macLen);
    printf("%p\r\n",mac);
 
    // 打印mac
    byte* bMac = (byte*)mac;
    std::string macResult;
    for (size_t i = 0; i < macLen; i++)
    {
        char macItem[2];
        /* code */
        sprintf(macItem,"%.2X",bMac[i]);
        macResult.append(macItem);
        if(i<macLen-1)
        {
            macResult.append("-");
        }
    }
    
    return macResult;
};

調(diào)用

void main(int* argc,char* argv[])
{
    // std::cout << 1111 <<std::endl;
    std::string ip;
    ip.append("192.168.31.191");
    std::string mac = GetMacAddress(ip);
    std::cout <<"ip\tmac"<< std::endl;
    std::cout << ip.c_str() << "\t" <<mac.c_str() << std::endl;
    getchar();
};

輸出

 ip     mac
192.168.31.191  08-D1-27-8F-25-EV

方法補(bǔ)充

除了上文的方法,小編還為大家整理了C++ 通過(guò)IP地址獲取MAC地址的其他方法,希望對(duì)大家有所幫助

話不多說(shuō) 直接上代碼

#include <iostream>
#include <string>
#include <winsock2.h>
#include <iphlpapi.h>
#pragma warning(disable:4996)

#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "iphlpapi.lib")

std::string getMacAddress(const std::string& ipAddress) {
    // 初始化Winsock
    WSADATA wsaData;
    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
        std::cerr << "WSAStartup failed." << std::endl;
        return "";
    }

    // 將IP地址轉(zhuǎn)換為ULONG格式
    ULONG destIp = inet_addr(ipAddress.c_str());
    if (destIp == INADDR_NONE) {
        std::cerr << "Invalid IP address." << std::endl;
        WSACleanup();
        return "";
    }

    // 準(zhǔn)備接收MAC地址的緩沖區(qū)
    ULONG macAddr[2];
    ULONG macAddrLen = 6;
    memset(macAddr, 0xff, sizeof(macAddr));

    // 調(diào)用SendARP函數(shù)獲取MAC地址
    DWORD ret = SendARP(destIp, 0, macAddr, &macAddrLen);
    if (ret == NO_ERROR) {
        // 將MAC地址轉(zhuǎn)換為字符串格式
        BYTE* macBytes = (BYTE*)macAddr;
        char macStr[18];
        sprintf_s(macStr, sizeof(macStr), "%02X:%02X:%02X:%02X:%02X:%02X",
            macBytes[0], macBytes[1], macBytes[2],
            macBytes[3], macBytes[4], macBytes[5]);
        WSACleanup();
        return std::string(macStr);
    }
    else {
        std::cerr << "Failed to get MAC address. Error code: " << ret << std::endl;
        WSACleanup();
        return "";
    }
}

int main() {
    std::string ipAddress;
    std::cout << "Enter IP address: ";
    std::cin >> ipAddress;

    std::string macAddress = getMacAddress(ipAddress);
    if (!macAddress.empty()) {
        std::cout << "MAC Address: " << macAddress << std::endl;
    }
    else {
        std::cout << "Could not retrieve MAC address." << std::endl;
    }

    return 0;
}

到此這篇關(guān)于C/C++通過(guò)IP獲取局域網(wǎng)網(wǎng)卡MAC地址的文章就介紹到這了,更多相關(guān)C++獲取局域網(wǎng)MAC地址內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c語(yǔ)言全盤(pán)搜索指定文件的實(shí)例代碼

    c語(yǔ)言全盤(pán)搜索指定文件的實(shí)例代碼

    c語(yǔ)言全盤(pán)搜索指定文件的實(shí)例代碼,需要的朋友可以參考一下
    2013-03-03
  • C語(yǔ)言操作符超詳細(xì)講解上篇

    C語(yǔ)言操作符超詳細(xì)講解上篇

    C?語(yǔ)言提供了豐富的操作符,有:算術(shù)操作符,移位操作符,位操作符,賦值操作符,單目操作符,關(guān)系操作符,邏輯操作符,條件操作符等。因?yàn)槠^(guò)大將分兩篇講解,讓我們通讀本篇來(lái)詳細(xì)了解吧
    2022-04-04
  • Qt6.0?qproperty-*不生效原因解決分析

    Qt6.0?qproperty-*不生效原因解決分析

    這篇文章主要為大家介紹了Qt6.0?qproperty-*不生效原因解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • C++無(wú)法重載點(diǎn)符號(hào)、::、sizeof等的原因

    C++無(wú)法重載點(diǎn)符號(hào)、::、sizeof等的原因

    這篇文章主要介紹了C++無(wú)法重載點(diǎn)符號(hào)、::、sizeof等的原因的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • 最新評(píng)論

    玉田县| 寿阳县| 增城市| 宝鸡市| 策勒县| 吉安县| 武夷山市| 得荣县| 红原县| 郸城县| 墨脱县| 宁明县| 文山县| 黄陵县| 库尔勒市| 通城县| 长沙县| 遂溪县| 嘉禾县| 横山县| 阜宁县| 锦州市| 旬阳县| 龙江县| 湄潭县| 侯马市| 安乡县| 肃南| 万安县| 日喀则市| 嫩江县| 彰武县| 当阳市| 呼伦贝尔市| 衡山县| 洛扎县| 绥滨县| 邹平县| 阳春市| 禄丰县| 合水县|