使用IP Helpers API获取本地网络信息

//通过使用IP Helpers API获取本地网络适配器信息
//获取信息包括:网络适配器名、网络适配器描述、MAC地址、IP地址、子网掩码、网关、是否启动DHCP

#include "stdafx.h"
#include "iostream"
#include "winsock2.h"
#include "iphlpapi.h"

using namespace std;

#pragma comment(lib,"IPHLPAPI.lib") //IP Helps API开发包的静态库


int _tmain(int argc, _TCHAR* argv[])
{
//指定获取到的网络信息结构体链表的指针
IP_ADAPTER_INFO *pAdapterInfo;
//保存获取到的网络信息结构体链表的长度
ULONG ulOutBufLen;
//返回调用编码
DWORD dwRetVal;
//在轮循所有网络信息适配器时使用的单个结构体变量
PIP_ADAPTER_INFO pAdapter;

//为pAdapterInfo分配空间
pAdapterInfo = (IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO));
ulOutBufLen =sizeof(IP_ADAPTER_INFO);
//在获取本地信息的过程中,需要两次调用GetAdaptersInfo()函数。第1次调用可以获取返回数据的大小,
//第2次调用使用前面获取到的数据大小作为参数,获取实际的IP_ADAPTER_INFO结构内容
//第1次调用GetAdapterInfo(),获取返回结果的大小保存到ulOutBufLen
if (GetAdaptersInfo(pAdapterInfo,&ulOutBufLen) !=ERROR_SUCCESS)
{
free(pAdapterInfo);
pAdapterInfo = (IP_ADAPTER_INFO *)malloc(ulOutBufLen);
}
//第2次调用GetAdaptersInfo(),获取本地网络信息保存到结构体pAdapterInfo中
if (dwRetVal = GetAdaptersInfo(pAdapterInfo,&ulOutBufLen) !=ERROR_SUCCESS)
{
cout<<"GetAdaptersInfo Error:"<<dwRetVal<<endl;
}

//显示本地网络适配器信息
//本地网络信息已经读取到pAdapterInfo链表中,因为本地可能已经安装多个网络适配器,所以需要使用while语句处理pAdapterInfo
//链表中的每个IP_ADAPTER_INFO结构体,并显示其中的网络信息
pAdapter = pAdapterInfo;
while (pAdapter)
{
cout<<"网络适配器名:"<<pAdapter->AdapterName<<endl;
cout<<"网络适配器描述:"<<pAdapter->Description<<endl;
cout<<"MAC地址:"<<endl;
for (int i=0;i<pAdapter->AddressLength;i++)
{
if (i==(pAdapter->AddressLength -1))
{
cout<<(int)pAdapter->Address[i];
}
else
{
cout<<(int)pAdapter->Address[i];
}
}
cout<<endl;
cout<<"IP地址:"<<pAdapter->IpAddressList.IpAddress.String<<endl;
cout<<"子网掩码:"<<pAdapter->IpAddressList.IpMask.String<<endl;
cout<<"网关:"<<pAdapter->GatewayList.IpAddress.String<<endl;

cout<<"*******************************************************"<<endl;
if (pAdapter->DhcpEnabled)
{
cout<<"启用DHCP:"<<"是"<<endl;
cout<<"DHCP服务器:"<<pAdapter->DhcpServer.IpAddress.String<<endl;
}
else
{
cout<<"启用DHCP:"<<"否"<<endl;
}
pAdapter = pAdapter->Next;

}

if(pAdapterInfo)
free(pAdapterInfo);

system("pause");
return 0;
}

转载于:https://www.cnblogs.com/weile/p/4976251.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值