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++程序设计有所帮助。