C++获取本机MAC,IP,MASK地址的方法
本文实例讲述了C++获取本机MAC,IP,MASK地址的方法,分享给大家供大家参考。具体方法如下:
#include"InitSock.h"
#include<stdio.h>
#include<iphlpapi.h>
#pragmacomment(lib,"IPHLPAPI.lib")
u_charg_ucLocalMac[6];
DWORDg_dwGatewayIP;
DWORDg_dwLocalIP;
DWORDg_dwMask;
BOOLGetGlobalData()
{
PIP_ADAPTER_INFOpAdapterInfo=NULL;
ULONGulSize=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_addrin;
in.S_un.S_addr=g_dwLocalIP;
printf(" IPAddress:%-30s\n",::inet_ntoa(in));
in.S_un.S_addr=g_dwGatewayIP;
printf(" GatewayAddress:%-30s\n",::inet_ntoa(in));
in.S_un.S_addr=g_dwMask;
printf(" MASKAddress:%-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;
returnTRUE;
}
voidmain()
{
CInitSockinitSock;
GetGlobalData();
printf("*******************************");
getchar();
}
希望本文所述对大家的C++程序设计有所帮助。