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
关注
打赏