#include <windows.h>
#include "Iphlpapi.h"
#include <iostream>
using namespace std;
#pragma comment(lib,"ws2_32")
#pragma comment(lib,"Iphlpapi")
bool GetGlobalData(u_char* ucLocalMac, DWORD& dwGatewayIp, DWORD& dwLocalIp, DWORD& dwMask)
{
PIP_ADAPTER_INFO pAdapterInfo = NULL;
ULONG uLen = 0;
//为适配器申请内存
::GetAdaptersInfo(pAdapterInfo,&uLen);
pAdapterInfo = (PIP_ADAPTER_INFO)::GlobalAlloc(GPTR, uLen);
//取得适配器的结构信息
if (::GetAdaptersInfo(pAdapterInfo, &uLen) == ERROR_SUCCESS)
{
if (pAdapterInfo != NULL)
{
memcpy(ucLocalMac, pAdapterInfo->Address, 6);
dwGatewayIp = ::inet_addr(pAdapterInfo->GatewayList.IpAddress.String);
dwLocalIp = ::inet_addr(pAdapterInfo->IpAddressList.IpAddress.String);
dwMask = ::inet_addr(pAdapterInfo->IpAddressList.IpMask.String);
return true;
}
}
return false;
}
int main()
{
u_char ucLocalMac[6]; //本机MAC地址
DWORD dwGatewayIp=0 ; //网关Ip
DWORD dwLocalIp=0 ; //本机Ip
DWORD dwMask=0 ; //子网掩码
//获取本机MAC、IP、网关Ip、子网掩码
GetGlobalData( ucLocalMac, dwGatewayIp, dwLocalIp, dwMask);
//打印MAC
printf("MAC Address:%02X-%02X-%02X-%02X-%02X-%02X\n", ucLocalMac[0], ucLocalMac[1], ucLocalMac[2], ucLocalMac[3], ucLocalMac[4], ucLocalMac[5]);
//打印默认网关
in_addr addr;
addr.S_un.S_addr = dwGatewayIp;
printf("Gateway:%s\n", ::inet_ntoa(addr));
//打印本机IP
addr.S_un.S_addr = dwLocalIp;
printf("IP Address:%s\n", ::inet_ntoa(addr));
//打印MASK地址
addr.S_un.S_addr = dwMask;
printf("Mask:%s\n", ::inet_ntoa(addr));
return 0;
}
c++获取本机MAC地址、IP地址、默认网关、子网掩码
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- IP地址 IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址...
- 1. IP、内网、外网 IP地址=网络地址+主机地址 教科书都会告诉大家私有IP有3种:A类10.0.0.0~10...
- 原文地址: https://blog.csdn.net/iotlily/article/details/52116...
