获取本机所有网卡的信息

看书学习,温故而知新,存档备用。

#include <WinSock2.h>
#pragma comment(lib,"WS2_32.lib")
#include "iphlpapi.h"
#pragma comment(lib,"iphlpapi.lib")

int GetAdaptersInfomation()
{
	PIP_ADAPTER_INFO pAdapterInfo;
	ULONG sizePointer=sizeof(IP_ADAPTER_INFO);
	DWORD res;
	pAdapterInfo=(PIP_ADAPTER_INFO)malloc(sizePointer);
	//1
	res=GetAdaptersInfo(pAdapterInfo,&sizePointer);
	if (ERROR_SUCCESS!=res)
	{
		while(ERROR_BUFFER_OVERFLOW==res)
		{
			free(pAdapterInfo);
			pAdapterInfo=(PIP_ADAPTER_INFO)malloc(sizePointer);
			res=GetAdaptersInfo(pAdapterInfo,&sizePointer);
		}
		if (ERROR_SUCCESS!=res)
		{
			printf("GetAdaptersInfo fail!\r\n");
			if(NULL!=pAdapterInfo){free(pAdapterInfo);}
			return -1;
		}
	}
	//2
	PIP_ADAPTER_INFO pTempInfo;
	pTempInfo=pAdapterInfo;
	int count=0;
	while(NULL!=pTempInfo)
	{
		printf("Adapter(%d):\r\n",count);
		printf("  Name:%s\r\n",pTempInfo->AdapterName);
		printf("  Description:%s\r\n",pTempInfo->Description);
		printf("  MAC Address:%02X-%02X-%02X-%02X-%02X-%02X\r\n",pTempInfo->Address[0],
			pTempInfo->Address[1],pTempInfo->Address[2],pTempInfo->Address[3],
			pTempInfo->Address[4],pTempInfo->Address[5]);

		IN_ADDR tempAddr;
		tempAddr.S_un.S_addr=::inet_addr(pTempInfo->IpAddressList.IpAddress.String);
		printf("  IPAddress:%s\r\n",::inet_ntoa(tempAddr));
		tempAddr.S_un.S_addr=::inet_addr(pTempInfo->IpAddressList.IpMask.String);
		printf("  Subnet Mask:%s\r\n",::inet_ntoa(tempAddr));
		tempAddr.S_un.S_addr=::inet_addr(pTempInfo->GatewayList.IpAddress.String);
		printf("  Default GateWay:%s\r\n",::inet_ntoa(tempAddr));
		pTempInfo=pTempInfo->Next;
		count++;
	}
	//3
	if(NULL!=pAdapterInfo){free(pAdapterInfo);}
	//4
	return count;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值