首页 > 编程 > C > 正文

VC实现获取本机MAC地址的方法

2020-02-24 14:26:53
字体:
来源:转载
供稿:网友

在实际的程序开发中,经常需要在程序运行时获取mac地址,其实MAC地址作为一种标识,是网卡的物理地址,也是是计算机通信的主要硬件设备,那么VC实现获取本机MAC地址的方法有哪些呢?下面跟武林技术频道小编一起来了解吧。

完整的实例代码如下:

#include "stdafx.h"#include  <stdio.h>  #include  <stdlib.h>  #include  <httpext.h>  #include  <windef.h>  #include  <Nb30.h>int getMAC(char * mac)   {    NCB ncb;    typedef struct _ASTAT_    {  ADAPTER_STATUS  adapt;   NAME_BUFFER  NameBuff  [30];    }ASTAT,  *  PASTAT;    ASTAT Adapter;      typedef struct _LANA_ENUM    {  //  le   UCHAR  length;   UCHAR  lana[MAX_LANA];    }LANA_ENUM  ;    LANA_ENUM lana_enum;      UCHAR uRetCode;    memset(&ncb, 0, sizeof(ncb));    memset(&lana_enum, 0, sizeof(lana_enum));      ncb.ncb_command = NCBENUM;    ncb.ncb_buffer = (unsigned char *)&lana_enum;    ncb.ncb_length = sizeof(LANA_ENUM);    uRetCode = Netbios(&ncb);    if(uRetCode != NRC_GOODRET)    return uRetCode;      for(int lana=0; lana<lana_enum.length; lana++)    {  ncb.ncb_command = NCBRESET;   ncb.ncb_lana_num = lana_enum.lana[lana];   uRetCode = Netbios(&ncb);    if(uRetCode == NRC_GOODRET)   break;  }  if(uRetCode != NRC_GOODRET)  return uRetCode;      memset(&ncb, 0, sizeof(ncb));  ncb.ncb_command = NCBASTAT;  ncb.ncb_lana_num = lana_enum.lana[0]; strcpy((char*)ncb.ncb_callname, "*");  ncb.ncb_buffer = (unsigned char *)&Adapter; ncb.ncb_length = sizeof(Adapter); uRetCode = Netbios(&ncb);  if(uRetCode != NRC_GOODRET)    return uRetCode;    sprintf(mac,"%02X-%02X-%02X-%02X-%02X-%02X",    Adapter.adapt.adapter_address[0],    Adapter.adapt.adapter_address[1],    Adapter.adapt.adapter_address[2],    Adapter.adapt.adapter_address[3],    Adapter.adapt.adapter_address[4],    Adapter.adapt.adapter_address[5]  );  return 0;   }int main(int argc, char* argv[]){ char  mac[200];   getMAC(mac);   printf("  mac  :  %s  /n",mac);    return 0;}

另外还需要注意:必须在project->Setting里添加库文件“netapi32.lib”。

以上是关于VC实现获取本机MAC地址的方法介绍,看完后你有所收获吗?我们还整理了更多最新最全面的相关资讯,喜欢的朋友们还可以收藏武林技术频道哦!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选