您当前的位置: 首页 >  windows

qianbo_insist

暂无认证

  • 0浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

windows下获取IP和MAC地址

qianbo_insist 发布时间:2021-07-01 15:00:22 ,浏览量:0

1、定义数据结构
//一个网卡可能有多个IP地址
typedef struct s_ip_fname
{
	std::vector ips;
	std::string mac;
}s_ip_fname;

使用std::vector 去获取更多的网卡和ip,一个系统里面可能有多个网卡,一个网卡可以有多个ip地址,这个必须了解。

2、获取mac的方法

GetAdaptersInfo API可以获取多块接口卡的信息 以下是代码:

#include 
#include 
#ifdef _WIN32
#include 
#include 
using namespace std;
#pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库
#endif
typedef struct s_ip_fname
{
	std::vector ips;
	std::string mac;
}s_ip_fname;
static int get_ipfname(std::vector &ff)
{
#define ADDR(x) pIpAdapterInfo->Address[x]
	PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
	unsigned long stSize = sizeof(IP_ADAPTER_INFO);
	int nRel = GetAdaptersInfo(pIpAdapterInfo, &stSize);
	DWORD netCardNum = 0;
	GetNumberOfInterfaces(&netCardNum);
	int IPnumPerNetCard = 0;
	if (ERROR_BUFFER_OVERFLOW == nRel)
	{
		delete pIpAdapterInfo;
		pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
		nRel = GetAdaptersInfo(pIpAdapterInfo, &stSize);
		return -1;
	}
	if (ERROR_SUCCESS == nRel)
	{
		//maybe we have >1 network card
		while (pIpAdapterInfo)
		{
			s_ip_fname ipf;
			switch (pIpAdapterInfo->Type)
			{
			case MIB_IF_TYPE_OTHER:
				//cout             
关注
打赏
1663161521
查看更多评论
0.0382s