获得本地所有的网络适配器及其信息
要获得本地所有的网卡信息,比如MAC地址,ip地址,ip掩码,网关地址 等等。
主要通过GetAdaptersInfo函数来获得
1.#include "Iphlpapi.h"
2.#pragma comment(lib,"Iphlpapi.lib")
相关练习代码如下:
int Adapter_counter=0;
BYTE bMacAddr[6];
::GetAdaptersInfo(padapter_info,&lSize);
if (lSize)
{
padapter_info=(PIP_ADAPTER_INFO)malloc(lSize);
if (ERROR_SUCCESS==::GetAdaptersInfo(padapter_info,&lSize))
{
cout<<"获得适配器信息成功"<<endl;
cout<<"*****************适配器相关信息*****************"<<endl;
while(padapter_info!=NULL)
{
cout<<"适配器"<<++Adapter_counter<<endl;
cout<<"适配器名称:"<<padapter_info->AdapterName<<endl;
cout<<"描述"<<padapter_info->Description <<endl;
cout<<"ip地址列表:"<<endl;
int Ip_counter=0;
IP_ADDR_STRING * pipstring=& (padapter_info->IpAddressList);
while(pipstring)
{
cout<<"IP "<<++Ip_counter<<endl;
cout<<pipstring->IpAddress.String<<endl;
cout<<"掩码地址:"<<endl;
cout<<pipstring->IpMask.String<<endl;
//下一个ip
pipstring=pipstring->Next;
}
IP_ADDR_STRING * gatewaystring=&(padapter_info->GatewayList);
if (gatewaystring)
{
cout<<"网关地址:"<<endl;
cout<<gatewaystring->IpAddress.String<<endl;
}
//MAC地址
ZeroMemory(bMacAddr,sizeof(bMacAddr));
memcpy(bMacAddr,padapter_info->Address,6);
cout<<"MAC地址:"<<endl;
CString strFormat;
strFormat.Format(_T("%02X-%02X-%02X-%02X-%02X-%02X"),bMacAddr[0],bMacAddr[1],bMacAddr[2],bMacAddr[3],bMacAddr[4],bMacAddr[5]);
wcout<<strFormat.GetBuffer(0)<<endl;
cout<<endl<<endl;
//下一个适配器
padapter_info=padapter_info->Next;
}
}
else
{
cout<<"获得适配器信息失败"<<endl;
}
}
return false;
}