首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查找mac地址?

如何查找mac地址?
EN

Stack Overflow用户
提问于 2012-04-28 23:13:16
回答 1查看 4.1K关注 0票数 4

如何在c++中找到当前正在运行应用程序的计算机的mac地址,然后将该mac地址与某个mac地址进行比较?

假设我们想要比较的某个mac地址是AB-12-CD-34-EF-56,怎么可能找到正在运行应用程序的mac地址,然后将该mac地址与AB-12-CD-34-EF-56 mac地址进行比较?做这样的事情的最好和最简单的方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2014-07-08 23:01:50

在Windows上,您可以使用函数GetAdaptersAddresses()来获取包含PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH]; (即mac地址)的IP_ADAPTER_ADDRESSES结构。

此函数将库Iphlpapi.lib和头文件<iphlpapi.h>作为依赖项引入。下面是一个简单的示例,它将打印可用适配器中的所有mac地址:

代码语言:javascript
复制
#include <Winsock2.h>
#include <iphlpapi.h>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <vector>
#pragma comment(lib, "IPHLPAPI.lib")

int main(int argc, char* argv[]){
  ULONG outBufLen = sizeof(IP_ADAPTER_ADDRESSES);
  GetAdaptersAddresses(0, 0, NULL, NULL, &outBufLen);
  std::vector<uint8_t> bytes(outBufLen, 0);
  PIP_ADAPTER_ADDRESSES pCurrAddresses = (IP_ADAPTER_ADDRESSES *)bytes.data();
  DWORD dwRetVal = GetAdaptersAddresses(0, 0, NULL, pCurrAddresses, &outBufLen);
  if (dwRetVal == NO_ERROR) {
    while (pCurrAddresses != NULL){ 
      for (size_t i = 0; i < (int) pCurrAddresses->PhysicalAddressLength; i++) {
        if (i == (pCurrAddresses->PhysicalAddressLength - 1))
          std::printf("%.2X\n", (int) pCurrAddresses->PhysicalAddress[i]);
        else
          std::printf("%.2X-",(int) pCurrAddresses->PhysicalAddress[i]);
      }
      pCurrAddresses = pCurrAddresses->Next;
    }
  }
  std::system("pause");
  return 0;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10364791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档