首页 > 编程 > C++ > 正文

C++获取本机MAC,IP,MASK地址的方法

2020-05-23 14:20:15
字体:
来源:转载
供稿:网友
这篇文章主要介绍了C++获取本机MAC,IP,MASK地址的方法,主要通过IPHLPAPI.lib调用相关函数实现该功能,是非常实用的技巧,需要的朋友可以参考下
 
 

本文实例讲述了C++获取本机MAC,IP,MASK地址的方法,分享给大家供大家参考。具体方法如下:

 

复制代码代码如下:
#include "InitSock.h"  
#include <stdio.h>  
  
#include <iphlpapi.h>  
#pragma comment(lib, "IPHLPAPI.lib")  
  
u_char g_ucLocalMac[6];  
DWORD g_dwGatewayIP;  
DWORD g_dwLocalIP;  
DWORD g_dwMask;  
  
BOOL GetGlobalData()  
{  
    PIP_ADAPTER_INFO pAdapterInfo = NULL;  
    ULONG ulSize = 0;  
    //为结构申请内存  
    ::GetAdaptersInfo(pAdapterInfo, &ulSize);  
    pAdapterInfo = (PIP_ADAPTER_INFO)::GlobalAlloc(GPTR, ulSize);  
    if ( ERROR_SUCCESS  == ::GetAdaptersInfo(pAdapterInfo, &ulSize))  
    {  
        if (pAdapterInfo != NULL)  
        {  
            memcpy(g_ucLocalMac, pAdapterInfo->Address, 6);  
            g_dwGatewayIP = ::inet_addr(pAdapterInfo->GatewayList.IpAddress.String);  
            g_dwLocalIP = ::inet_addr(pAdapterInfo->IpAddressList.IpAddress.String);  
            g_dwMask = ::inet_addr(pAdapterInfo->IpAddressList.IpMask.String);  
        }  
    }  
    //in_addr表示IP的结构  
    in_addr in;  
    in.S_un.S_addr = g_dwLocalIP;  
    printf("  IP Address:%-30s/n", ::inet_ntoa(in));  
  
    in.S_un.S_addr = g_dwGatewayIP;  
    printf("  Gateway Address:%-30s/n", ::inet_ntoa(in));  
  
    in.S_un.S_addr = g_dwMask;  
    printf("  MASK Address:%-30s/n", ::inet_ntoa(in));  
  
    u_char* p = g_ucLocalMac;  
    printf("  MAC:%02X-%02X-%02X-%02X-%02X-%02X/n", p[0], p[1], p[2], p[3], p[4], p[5]);  
    ::GlobalFree(pAdapterInfo);  
    pAdapterInfo = NULL;  
    return TRUE;  
}  
  
void main()  
{  
    CInitSock initSock;  
      
    GetGlobalData();  
  
    printf("*******************************");  
    getchar();  
}

 

希望本文所述对大家的C++程序设计有所帮助。


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