获取本机IP MAC地址

 1 #include <windows.h>

 2 #include <stdio.h>

 3 #include "Iphlpapi.h" //包含对IP帮助函数的定义

 4 #pragma comment(lib,"Iphlpapi.lib")

 5 #pragma comment(lib,"WS2_32.lib")//全局数据

 6 u_char g_ucLocalMac[6];

 7 DWORD g_dwGatewayIP;

 8 DWORD g_dwLocalIP;

 9 DWORD g_dwMask;

10 BOOL GetGlobalData()

11 {

12     PIP_ADAPTER_INFO pAdapterInfo = NULL;

13     ULONG ulLen = 0;

14     //为适配器结构申请内存

15     ::GetAdaptersInfo(pAdapterInfo,&ulLen);

16     pAdapterInfo = (PIP_ADAPTER_INFO)::GlobalAlloc(GPTR,ulLen);

17     //取得本地适配器结构信息

18     if(::GetAdaptersInfo(pAdapterInfo,&ulLen) == ERROR_SUCCESS)

19     {

20         if(pAdapterInfo != NULL)

21         {

22             memcpy(g_ucLocalMac,pAdapterInfo->Address,6);

23             g_dwGatewayIP = ::inet_addr(pAdapterInfo->GatewayList.IpAddress.String);

24             g_dwLocalIP = ::inet_addr(pAdapterInfo->IpAddressList.IpAddress.String);

25             g_dwMask = ::inet_addr(pAdapterInfo->IpAddressList.IpMask.String);

26         }

27     }

28 

29     printf("\n ---------------------本地主机信息---------------------\n\n");

30     in_addr in;

31     in.S_un.S_addr = g_dwLocalIP;

32     printf("    IP Address : %s\n",::inet_ntoa(in));

33 

34     in.S_un.S_addr = g_dwMask;

35     printf("    Subnet Mask : %s\n",::inet_ntoa(in));

36 

37     in.S_un.S_addr = g_dwGatewayIP;

38     printf("    Default Gateway:%s\n",::inet_ntoa(in));

39 

40     u_char *p = g_ucLocalMac;

41     printf("    MAC Address:%02X-%02X-%02X-%02X-%02X-%02X\n",p[0],p[1],p[2],p[3],p[4],p[5]);

42 

43     printf("\n\n");

44 

45     return TRUE;

46 }

主要使用帮助函数GetAdapterInfo即可。

VS成功实例:

 1 // getMac.cpp : 定义控制台应用程序的入口点。

 2 //

 3 

 4 #include "stdafx.h"

 5 #include <windows.h>

 6  #include <stdio.h>

 7  #include "Iphlpapi.h" //包含对IP帮助函数的定义

 8  #pragma comment(lib,"Iphlpapi.lib")

 9  #pragma comment(lib,"WS2_32.lib")//全局数据

10  u_char g_ucLocalMac[6];

11  DWORD g_dwGatewayIP;

12  DWORD g_dwLocalIP;

13  DWORD g_dwMask;

14  BOOL GetGlobalData()

15  {

16      PIP_ADAPTER_INFO pAdapterInfo = NULL;

17      ULONG ulLen = 0;

18      //为适配器结构申请内存

19      ::GetAdaptersInfo(pAdapterInfo,&ulLen);

20      pAdapterInfo = (PIP_ADAPTER_INFO)::GlobalAlloc(GPTR,ulLen);

21      //取得本地适配器结构信息

22      if(::GetAdaptersInfo(pAdapterInfo,&ulLen) == ERROR_SUCCESS)

23      {

24          if(pAdapterInfo != NULL)

25          {

26              memcpy(g_ucLocalMac,pAdapterInfo->Address,6);

27              g_dwGatewayIP = ::inet_addr(pAdapterInfo->GatewayList.IpAddress.String);

28              g_dwLocalIP = ::inet_addr(pAdapterInfo->IpAddressList.IpAddress.String);

29              g_dwMask = ::inet_addr(pAdapterInfo->IpAddressList.IpMask.String);

30          }

31      }

32  

33      printf("\n ---------------------本地主机信息---------------------\n\n");

34      in_addr in;

35      in.S_un.S_addr = g_dwLocalIP;

36      printf("    IP Address : %s\n",::inet_ntoa(in));

37  

38      in.S_un.S_addr = g_dwMask;

39      printf("    Subnet Mask : %s\n",::inet_ntoa(in));

40  

41      in.S_un.S_addr = g_dwGatewayIP;

42      printf("    Default Gateway:%s\n",::inet_ntoa(in));

43  

44      u_char *p = g_ucLocalMac;

45      printf("    MAC Address:%02X-%02X-%02X-%02X-%02X-%02X\n",p[0],p[1],p[2],p[3],p[4],p[5]);

46  

47      printf("\n\n");

48  

49      return TRUE;

50  }

51 

52 int _tmain(int argc, _TCHAR* argv[])

53 {

54     GetGlobalData();

55     return 0;

56 }

结果如下:

获取本机IP MAC地址

你可能感兴趣的:(mac)