-
大小: 6.63MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-09-26
- 語(yǔ)言: 其他
- 標(biāo)簽: 網(wǎng)卡信息??Iphlpapi??網(wǎng)卡狀態(tài)??
資源簡(jiǎn)介
使用windows sdk提供的API函數(shù)GetAdaptersInfo獲得本機(jī)所有網(wǎng)卡的網(wǎng)卡名、網(wǎng)卡描述、網(wǎng)卡MAC地址、網(wǎng)卡IP、網(wǎng)卡類型等信息,并用IP_ADAPTER_INFO結(jié)構(gòu)體存儲(chǔ),使用GetIfEntry獲取網(wǎng)卡的狀態(tài),可有效判斷出網(wǎng)卡通訊是否正常,是否插入網(wǎng)線等......

代碼片段和文件信息
#include?
#include?
#include?
using?namespace?std;
#pragma?comment(lib“Iphlpapi.lib“)?//需要添加Iphlpapi.lib庫(kù)
bool?getAdapterState(DWORD?index);
//int?_tmain(int?argc?_TCHAR*?argv[])
int?__cdecl?main()
{
//PIP_ADAPTER_INFO結(jié)構(gòu)體指針存儲(chǔ)本機(jī)網(wǎng)卡信息
PIP_ADAPTER_INFO?pIpAdapterInfo?=?new?IP_ADAPTER_INFO();
PIP_ADAPTER_INFO?pAdapter?=?NULL;
//得到結(jié)構(gòu)體大小用于GetAdaptersInfo參數(shù)
unsigned?long?stSize?=?sizeof(IP_ADAPTER_INFO);
//調(diào)用GetAdaptersInfo函數(shù)填充pIpAdapterInfo指針變量;其中stSize參數(shù)既是一個(gè)輸入量也是一個(gè)輸出量
int?nRel?=?GetAdaptersInfo(pIpAdapterInfo&stSize);
//記錄網(wǎng)卡數(shù)量
int?netCardNum?=?0;
//記錄每張網(wǎng)卡上的IP地址數(shù)量
int?IPnumPerNetCard?=?0;
if?(ERROR_BUFFER_OVERFLOW?==?nRel)
{
//如果函數(shù)返回的是ERROR_BUFFER_OVERFLOW
//則說(shuō)明GetAdaptersInfo參數(shù)傳遞的內(nèi)存空間不夠同時(shí)其傳出stSize表示需要的空間大小
//這也是說(shuō)明為什么stSize既是一個(gè)輸入量也是一個(gè)輸出量
//釋放原來(lái)的內(nèi)存空間
delete?pIpAdapterInfo;
//重新申請(qǐng)內(nèi)存空間用來(lái)存儲(chǔ)所有網(wǎng)卡信息
pIpAdapterInfo?=?(PIP_ADAPTER_INFO)new?BYTE[stSize];
//再次調(diào)用GetAdaptersInfo函數(shù)填充pIpAdapterInfo指針變量
nRel=GetAdaptersInfo(pIpAdapterInfo&stSize);????
}
if?(ERROR_SUCCESS?==?nRel)
{
//輸出網(wǎng)卡信息
//可能有多網(wǎng)卡因此通過(guò)循環(huán)去判斷
pAdapter?=?pIpAdapterInfo;
while?(pAdapter)
{
cout<<“網(wǎng)卡數(shù)量:“<<++netCardNum< cout<<“網(wǎng)卡名稱:“<AdapterName< cout<<“網(wǎng)卡描述:“<Description< switch(pAdapter->Type)
{
case?MIB_IF_TYPE_OTHER:
cout<<“網(wǎng)卡類型:“<<“OTHER“< break;
case?MIB_IF_TYPE_ETHERNET:
cout<<“網(wǎng)卡類型:“<<“ETHERNET“< break;
case?MIB_IF_TYPE_TOKENRING:
cout<<“網(wǎng)卡類型:“<<“TOKENRING“< break;
case?MIB_IF_TYPE_FDDI:
cout<<“網(wǎng)卡類型:“<<“FDDI“< break;
case?MIB_IF_TYPE_PPP:
printf(“PP\n“);
cout<<“網(wǎng)卡類型:“<<“PPP“< break;
case?MIB_IF_TYPE_LOOPBACK:
cout<<“網(wǎng)卡類型:“<<“LOOPBACK“< break;
case?MIB_IF_TYPE_SLIP:
cout<<“網(wǎng)卡類型:“<<“SLIP“< break;
default:
break;
}
cout<<“網(wǎng)卡MAC地址:“;
for?(DWORD?i?=?0;?i?AddressLength;?i++)
if?(i?AddressLength-1)
{
printf(“%02X-“?pAdapter->Address[i]);
}
else
{
printf(“%02X\n“?pAdapter->Address[i]);
}
cout<<“網(wǎng)卡IP地址如下:“< //可能網(wǎng)卡有多IP因此通過(guò)循環(huán)去判斷
IP_ADDR_STRING?*pIpAddrString?=&(pAdapter->IpAddressList);
IPnumPerNetCard?=?0;
do?
{
cout<<“該網(wǎng)卡上的IP數(shù)量:“<<++IPnumPerNetCard< cout<<“IP?地址:“<IpAddress.String< cout<<“子網(wǎng)地址:“<IpMask.String< cout<<“網(wǎng)關(guān)地址:“<GatewayList.IpAddress.String< pIpAddrString=pIpAddrString->Next;
}?while?(pIpAddrString);
if(getAdapterState(pAdapter->Index))
cout<<“網(wǎng)卡工作正常“< else
cout<<“網(wǎng)卡工作異常“< pAdapter?=?pAdapter->Next;
cout<<“--------------------------------------------------------------------“< }
}
//釋放內(nèi)存空間
if?(pIpAdapterInfo)
{
delete?[]pIpAdapterInfo;
pIpAdapterInfo=NULL;
}
return?0;
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????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個(gè)文件信息
評(píng)論
共有 條評(píng)論