资源简介
使用windows sdk提供的API函数GetAdaptersInfo获得本机所有网卡的网卡名、网卡描述、网卡MAC地址、网卡IP、网卡类型等信息,并用IP_ADAPTER_INFO结构体存储,使用GetIfEntry获取网卡的状态,可有效判断出网卡通讯是否正常,是否插入网线等......
代码片段和文件信息
#include
#include
#include
using namespace std;
#pragma comment(lib“Iphlpapi.lib“) //需要添加Iphlpapi.lib库
bool getAdapterState(DWORD index);
//int _tmain(int argc _TCHAR* argv[])
int __cdecl main()
{
//PIP_ADAPTER_INFO结构体指针存储本机网卡信息
PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
PIP_ADAPTER_INFO pAdapter = NULL;
//得到结构体大小用于GetAdaptersInfo参数
unsigned long stSize = sizeof(IP_ADAPTER_INFO);
//调用GetAdaptersInfo函数填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量
int nRel = GetAdaptersInfo(pIpAdapterInfo&stSize);
//记录网卡数量
int netCardNum = 0;
//记录每张网卡上的IP地址数量
int IPnumPerNetCard = 0;
if (ERROR_BUFFER_OVERFLOW == nRel)
{
//如果函数返回的是ERROR_BUFFER_OVERFLOW
//则说明GetAdaptersInfo参数传递的内存空间不够同时其传出stSize表示需要的空间大小
//这也是说明为什么stSize既是一个输入量也是一个输出量
//释放原来的内存空间
delete pIpAdapterInfo;
//重新申请内存空间用来存储所有网卡信息
pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
//再次调用GetAdaptersInfo函数填充pIpAdapterInfo指针变量
nRel=GetAdaptersInfo(pIpAdapterInfo&stSize);
}
if (ERROR_SUCCESS == nRel)
{
//输出网卡信息
//可能有多网卡因此通过循环去判断
pAdapter = pIpAdapterInfo;
while (pAdapter)
{
cout<<“网卡数量:“<<++netCardNum< cout<<“网卡名称:“<AdapterName< cout<<“网卡描述:“<Description< switch(pAdapter->Type)
{
case MIB_IF_TYPE_OTHER:
cout<<“网卡类型:“<<“OTHER“< break;
case MIB_IF_TYPE_ETHERNET:
cout<<“网卡类型:“<<“ETHERNET“< break;
case MIB_IF_TYPE_TOKENRING:
cout<<“网卡类型:“<<“TOKENRING“< break;
case MIB_IF_TYPE_FDDI:
cout<<“网卡类型:“<<“FDDI“< break;
case MIB_IF_TYPE_PPP:
printf(“PP\n“);
cout<<“网卡类型:“<<“PPP“< break;
case MIB_IF_TYPE_LOOPBACK:
cout<<“网卡类型:“<<“LOOPBACK“< break;
case MIB_IF_TYPE_SLIP:
cout<<“网卡类型:“<<“SLIP“< break;
default:
break;
}
cout<<“网卡MAC地址:“;
for (DWORD i = 0; i < pAdapter->AddressLength; i++)
if (i < pAdapter->AddressLength-1)
{
printf(“%02X-“ pAdapter->Address[i]);
}
else
{
printf(“%02X\n“ pAdapter->Address[i]);
}
cout<<“网卡IP地址如下:“< //可能网卡有多IP因此通过循环去判断
IP_ADDR_STRING *pIpAddrString =&(pAdapter->IpAddressList);
IPnumPerNetCard = 0;
do
{
cout<<“该网卡上的IP数量:“<<++IPnumPerNetCard< cout<<“IP 地址:“<IpAddress.String< cout<<“子网地址:“<IpMask.String< cout<<“网关地址:“<GatewayList.IpAddress.String< pIpAddrString=pIpAddrString->Next;
} while (pIpAddrString);
if(getAdapterState(pAdapter->Index))
cout<<“网卡工作正常“< else
cout<<“网卡工作异常“< pAdapter = pAdapter->Next;
cout<<“--------------------------------------------------------------------“< }
}
//释放内存空间
if (pIpAdapterInfo)
{
delete []pIpAdapterInfo;
pIpAdapterInfo=NULL;
}
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3934 2016-06-29 08:19 AdapterInfoInEng\AdapterInfoInEng\AdapterInfoInEng.vcproj
文件 1419 2016-06-29 09:27 AdapterInfoInEng\AdapterInfoInEng\AdapterInfoInEng.vcproj.LUHAISONG-N.LHS.user
文件 663 2016-06-29 08:19 AdapterInfoInEng\AdapterInfoInEng\Debug\AdapterInfoInEng.exe.em
文件 728 2016-06-29 08:19 AdapterInfoInEng\AdapterInfoInEng\Debug\AdapterInfoInEng.exe.em
文件 621 2016-06-29 08:43 AdapterInfoInEng\AdapterInfoInEng\Debug\AdapterInfoInEng.exe.intermediate.manifest
文件 6900 2016-06-29 08:43 AdapterInfoInEng\AdapterInfoInEng\Debug\BuildLog.htm
文件 41357 2016-06-29 08:43 AdapterInfoInEng\AdapterInfoInEng\Debug\main.obj
文件 60 2016-06-29 08:43 AdapterInfoInEng\AdapterInfoInEng\Debug\mt.dep
文件 420864 2016-06-29 08:43 AdapterInfoInEng\AdapterInfoInEng\Debug\vc90.idb
文件 126976 2016-06-29 08:43 AdapterInfoInEng\AdapterInfoInEng\Debug\vc90.pdb
文件 5554 2016-06-29 08:43 AdapterInfoInEng\AdapterInfoInEng\main.cpp
文件 11865088 2016-06-29 09:27 AdapterInfoInEng\AdapterInfoInEng.ncb
文件 914 2016-06-29 08:17 AdapterInfoInEng\AdapterInfoInEng.sln
..A..H. 8192 2016-06-29 09:27 AdapterInfoInEng\AdapterInfoInEng.suo
文件 31744 2016-06-29 08:43 AdapterInfoInEng\Debug\AdapterInfoInEng.exe
文件 326348 2016-06-29 08:43 AdapterInfoInEng\Debug\AdapterInfoInEng.ilk
文件 510976 2016-06-29 08:43 AdapterInfoInEng\Debug\AdapterInfoInEng.pdb
文件 3934 2016-06-29 08:57 AdapterInfoInCHN\AdapterInfoInCHN\AdapterInfoInCHN.vcproj
文件 1419 2016-06-29 09:25 AdapterInfoInCHN\AdapterInfoInCHN\AdapterInfoInCHN.vcproj.LUHAISONG-N.LHS.user
文件 663 2016-06-29 08:58 AdapterInfoInCHN\AdapterInfoInCHN\Debug\AdapterInfoInCHN.exe.em
文件 728 2016-06-29 08:58 AdapterInfoInCHN\AdapterInfoInCHN\Debug\AdapterInfoInCHN.exe.em
文件 621 2016-06-29 08:58 AdapterInfoInCHN\AdapterInfoInCHN\Debug\AdapterInfoInCHN.exe.intermediate.manifest
文件 10656 2016-06-29 08:58 AdapterInfoInCHN\AdapterInfoInCHN\Debug\BuildLog.htm
文件 69287 2016-06-29 08:58 AdapterInfoInCHN\AdapterInfoInCHN\Debug\main.obj
文件 60 2016-06-29 08:58 AdapterInfoInCHN\AdapterInfoInCHN\Debug\mt.dep
文件 527360 2016-06-29 08:58 AdapterInfoInCHN\AdapterInfoInCHN\Debug\vc90.idb
文件 266240 2016-06-29 08:58 AdapterInfoInCHN\AdapterInfoInCHN\Debug\vc90.pdb
文件 4027 2016-06-29 08:58 AdapterInfoInCHN\AdapterInfoInCHN\main.cpp
文件 12897280 2016-06-29 09:25 AdapterInfoInCHN\AdapterInfoInCHN.ncb
文件 914 2016-06-29 08:54 AdapterInfoInCHN\AdapterInfoInCHN.sln
............此处省略16个文件信息
评论
共有 条评论