C/C++:Windows编程—代码获取本地所有网卡信息(网卡描述,IP地址,子网掩码,MAC地址)

先看效果

C/C++:Windows编程—代码获取本地所有网卡信息(网卡描述,IP地址,子网掩码,MAC地址)_第1张图片

看代码

使用 GetAdaptersInfo 函数获取网卡的所有信息。
MSDN函数说明 https://docs.microsoft.com/en-us/windows/desktop/api/iphlpapi/nf-iphlpapi-getadaptersinfo

#include 
#include 
#include 
#include 
//#pragma comment(lib,"Iphlpapi.lib") //需要Iphlpapi.lib库 ,devc++中 项目 -> 项目选项-> 参数 -> 添加链接库 libiphlpapi.a (D:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib\libiphlpapi.a) 
using namespace std;

static const  int ADAPTERNUM  = 10; 
void getAllAdapterInfo(){
	
	PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO[ADAPTERNUM];// 10个网卡空间 足够了 
	unsigned long stSize = sizeof(IP_ADAPTER_INFO) * ADAPTERNUM;
	// 获取所有网卡信息,参数二为输入输出参数 
	int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
	// 空间不足
	if (ERROR_BUFFER_OVERFLOW == nRel) {
		// 释放空间
		if(pIpAdapterInfo!=NULL)
			delete[] pIpAdapterInfo;
		return; 
	}
	
	PIP_ADAPTER_INFO cur =   pIpAdapterInfo;
	// 多个网卡 通过链表形式链接起来的 
	while(cur){
		cout<<"网卡描述:"<Description<Type) {
			case MIB_IF_TYPE_OTHER:
				break;
			case MIB_IF_TYPE_ETHERNET:
				{
					IP_ADDR_STRING *pIpAddrString =&(cur->IpAddressList);
					cout << "IP:" << pIpAddrString->IpAddress.String << endl;
					cout << "子网掩码:" << 	pIpAddrString->IpMask.String <IpAddressList);
					cout << "IP:" << pIpAddrString->IpAddress.String << endl;
					cout << "子网掩码:" << 	pIpAddrString->IpMask.String <AddressLength; j++){
			macStr[k++] = hex[(cur->Address[j] & 0xf0) >> 4];
			macStr[k++] = hex[cur->Address[j] & 0x0f];
			macStr[k++] = '-'; 
		} 
		macStr[k-1] = 0;
		
		cout<<"MAC:" << macStr << endl; // mac地址 16进制字符串表示 
		cur = cur->Next;
		cout << "--------------------------------------------------" << endl;
	}
	
	// 释放空间
	if(pIpAdapterInfo!=NULL)
		delete[] pIpAdapterInfo;
} 
int main(int argc, char* argv[])
{
	getAllAdapterInfo();
	return 0;
}

项目工程

如果你的跑不起来,可以下载完整devc++的项目代码。

你可能感兴趣的:(【Language_C】,【Windows编程】)