• 获取本机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 }

    结果如下:

  • 相关阅读:
    C++ | 变量缩写
    C++_数据类型和操作
    Python_pandas处理数据格式和统计频次
    C++_分离编译与Cmake
    C++_输入和输出示例
    C++字符串分割
    Pytorch_yoloV5预测数据非结构数据结构化
    Pytorch_模型部署和推断
    mysql触发器
    【分布式ID】雪花、TDDLSEQUENCE、UUID
  • 原文地址:https://www.cnblogs.com/xing901022/p/2714569.html
Copyright © 2020-2023  润新知