天天看点

获得本地所有的网络适配器及其信息

                                                     获得本地所有的网络适配器及其信息

     要获得本地所有的网卡信息,比如MAC地址,ip地址,ip掩码,网关地址 等等。

      主要通过GetAdaptersInfo函数来获得

      1.#include "Iphlpapi.h"

      2.#pragma  comment(lib,"Iphlpapi.lib")

      相关练习代码如下:

      // 获得网卡相关信息

bool GetLocalAdapterInfo(void)

{

PIP_ADAPTER_INFO padapter_info=NULL;

ULONG lSize=0;

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;

}