[C++] 读取MAC号 →→→→→进入此内容的聊天室

来自 , 2020-09-06, 写在 C++, 查看 168 次.
URL http://www.code666.cn/view/f106b7f9
  1. #include <winsock2.h>
  2. #include <iphlpapi.h>
  3. #pragma comment(lib, "IPHLPAPI.lib")
  4.  
  5. bool GetMacByGetAdaptersAddresses(std::string& macOUT)
  6. {
  7.         bool ret = false;
  8.  
  9.         ULONG outBufLen = sizeof(IP_ADAPTER_ADDRESSES);
  10.         PIP_ADAPTER_ADDRESSES pAddresses = (IP_ADAPTER_ADDRESSES*)malloc(outBufLen);
  11.         if (pAddresses == NULL)
  12.                 return false;
  13.         // Make an initial call to GetAdaptersAddresses to get the necessary size into the ulOutBufLen variable
  14.         if (GetAdaptersAddresses(AF_UNSPEC, 0, NULL, pAddresses, &outBufLen) == ERROR_BUFFER_OVERFLOW)
  15.         {
  16.                 free(pAddresses);
  17.                 pAddresses = (IP_ADAPTER_ADDRESSES*)malloc(outBufLen);
  18.                 if (pAddresses == NULL)
  19.                         return false;
  20.         }
  21.  
  22.         if (GetAdaptersAddresses(AF_UNSPEC, 0, NULL, pAddresses, &outBufLen) == NO_ERROR)
  23.         {
  24.                 // If successful, output some information from the data we received
  25.                 for (PIP_ADAPTER_ADDRESSES pCurrAddresses = pAddresses; pCurrAddresses != NULL; pCurrAddresses = pCurrAddresses->Next)
  26.                 {
  27.                         // 确保MAC地址的长度为 00-00-00-00-00-00
  28.                         if (pCurrAddresses->PhysicalAddressLength != 6)
  29.                                 continue;
  30.                         char acMAC[32];
  31.                         sprintf_s(acMAC, "%02X-%02X-%02X-%02X-%02X-%02X",
  32.                                 int(pCurrAddresses->PhysicalAddress[0]),
  33.                                 int(pCurrAddresses->PhysicalAddress[1]),
  34.                                 int(pCurrAddresses->PhysicalAddress[2]),
  35.                                 int(pCurrAddresses->PhysicalAddress[3]),
  36.                                 int(pCurrAddresses->PhysicalAddress[4]),
  37.                                 int(pCurrAddresses->PhysicalAddress[5]));
  38.                         macOUT = acMAC;
  39.                         ret = true;
  40.                         break;
  41.                 }
  42.         }
  43.  
  44.         free(pAddresses);
  45.         return ret;
  46. }
  47.  

回复 "读取MAC号"

这儿你可以回复上面这条便签

captcha