1 #include "stdafx.h" 2 #include <Windows.h> 3 #include <IPHlpApi.h> 4 #include <iostream> 5 #pragma comment(lib,"IPHlpApi.lib") 6 using namespace std; 7 8 BOOL GetLocalAdaptersInfo() 9 { 10 //IP_ADAPTER_INFO結構體 11 PIP_ADAPTER_INFO pIpAdapterInfo = NULL; 12 pIpAdapterInfo = new IP_ADAPTER_INFO; 13 14 //結構體大小 15 unsigned long ulSize = sizeof(IP_ADAPTER_INFO); 16 17 //獲取適配器信息 18 int nRet = GetAdaptersInfo(pIpAdapterInfo,&ulSize); 19 20 if (ERROR_BUFFER_OVERFLOW == nRet) 21 { 22 //空間不足,刪除之前分配的空間 23 delete []pIpAdapterInfo; 24 25 //重新分配大小 26 pIpAdapterInfo = (PIP_ADAPTER_INFO) new BYTE[ulSize]; 27 28 //獲取適配器信息 29 nRet = GetAdaptersInfo(pIpAdapterInfo,&ulSize); 30 31 //獲取失敗 32 if (ERROR_SUCCESS != nRet) 33 { 34 if (pIpAdapterInfo != NULL) 35 { 36 delete []pIpAdapterInfo; 37 } 38 return FALSE; 39 } 40 } 41 42 //MAC 地址信息 43 char szMacAddr[20]; 44 //賦值指針 45 PIP_ADAPTER_INFO pIterater = pIpAdapterInfo; 46 while(pIterater) 47 { 48 cout<<"網卡名稱:"<<pIterater->AdapterName<<endl; 49 50 cout<<"網卡描述:"<<pIterater->Description<<endl; 51 52 sprintf_s(szMacAddr,20,"%02X-%02X-%02X-%02X-%02X-%02X", 53 pIterater->Address[0], 54 pIterater->Address[1], 55 pIterater->Address[2], 56 pIterater->Address[3], 57 pIterater->Address[4], 58 pIterater->Address[5]); 59 60 cout<<"MAC 地址:"<<szMacAddr<<endl; 61 62 cout<<"IP地址列表:"<<endl<<endl; 63 64 //指向IP地址列表 65 PIP_ADDR_STRING pIpAddr = &pIterater->IpAddressList; 66 while (pIpAddr) 67 { 68 cout<<"IP地址: "<<pIpAddr->IpAddress.String<<endl; 69 cout<<"子網掩碼:"<<pIpAddr->IpMask.String<<endl; 70 71 //指向網關列表 72 PIP_ADDR_STRING pGateAwayList = &pIterater->GatewayList; 73 while(pGateAwayList) 74 { 75 cout<<"網關: "<<pGateAwayList->IpAddress.String<<endl; 76 77 pGateAwayList = pGateAwayList->Next; 78 } 79 80 pIpAddr = pIpAddr->Next; 81 } 82 cout<<endl<<"--------------------------------------------------"<<endl; 83 84 pIterater = pIterater->Next; 85 } 86 87 //清理 88 if (pIpAdapterInfo) 89 { 90 delete []pIpAdapterInfo; 91 } 92 93 return TRUE; 94 } 95 96 int _tmain(int argc, _TCHAR* argv[]) 97 { 98 GetLocalAdaptersInfo(); 99 100 cin.get(); 101 return 0; 102 }