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 }
原文地址:http://blog.csdn.net/sonsie007/article/details/8837572