微软官方MSDN原版Win11系统下载

当前位置:首页>>Mac系统

w8系统mac地址查询 获取当前电脑下的所有IP和对应的MAC地址

软件大小:

软件语言:

浏览人数:354人

软件类型:

授权方式:

用户评分:

更新时间:2022-12-25

软件分类:Mac系统

运行环境:

Mac系统

这几天需要用到的一个功能就是读取机器的Mac地址

一般一台主机上可能有多个网卡w8系统mac地址查询,也可能有多个网卡,每个网卡可能对应多个IP地址。 但是每张网卡只有一个MAC地址。

那么我们如何获取本机的Mac地址呢?

获取当前电脑下的所有IP和Mac地址

那么,来实现吧~

下面的代码是纯C++的,可以嵌套在任何框架中。 我也比较喜欢写一些干净的代码,哈哈~

获取当前电脑下的所有IP和对应的MAC地址

//头文件
#include 
#include 

//具体实现
{
   //TODO:获取本机的MAC地址
   std::string sMac = "";
   PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
   //得到结构体大小,用于GetAdaptersInfo参数
   unsigned long stSize = sizeof(IP_ADAPTER_INFO);
   //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;
   //其中stSize参数既是一个输入量也是一个输出量
   int nRel = GetAdaptersInfo(pIpAdapterInfo, &stSize);
   if (ERROR_BUFFER_OVERFLOW == nRel)
   {
      //如果函数返回的是ERROR_BUFFER_OVERFLOW
      //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
      //这也是说明为什么stSize既是一个输入量也是一个输出量

      //释放原来的内存空间
      delete pIpAdapterInfo;
      //重新申请内存空间用来存储所有网卡信息
      pIpAdapterInfo = (PIP_ADAPTER_INFO) new BYTE[stSize];
      //再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量
      nRel = GetAdaptersInfo(pIpAdapterInfo, &stSize);

} if (ERROR_SUCCESS == nRel) { //每个网卡对应一个链表节点 while (pIpAdapterInfo) { for (int i = 0; i < pIpAdapterInfo->AddressLength; i++) { int nAddress = (int)pIpAdapterInfo->Address[i]; char buf[5]; if (i < pIpAdapterInfo->AddressLength - 1) { sprintf(buf, "X-", nAddress); } else { sprintf(buf, "X", nAddress); } sMac += buf; } pIpAdapterInfo = pIpAdapterInfo->Next; } } //释放内存 if (pIpAdapterInfo) { delete pIpAdapterInfo; } return sMac; }

代码分析:

在上面的代码中,最重要的是如何将我们获取到的MAC地址转换成字符串格式。

我认为很多博客只是输出它,并没有真正告诉我们如何组织数据。

在上面的代码中不难发现w8系统mac地址查询,我是通过while循环逐一获取电脑上的Mac地址信息w8系统mac地址查询,这样就可以取出每张网卡对应的MAC地址了

本系统及软件只用于个人封装技术研究交流使用,不得用于商业用途,且本站不承担任何技术及版权问题,请在试用后24小时内删除!

下载地址

Mac系统排行榜

U盘装系统排行榜

更多>>

系统教程排行榜

更多>>

公众号