获取本机IP MAC地址
时间:2022-04-22
本文章向大家介绍获取本机IP MAC地址,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1 #include <windows.h>
2 #include <stdio.h>
3 #include "Iphlpapi.h" //包含对IP帮助函数的定义
4 #pragma comment(lib,"Iphlpapi.lib")
5 #pragma comment(lib,"WS2_32.lib")//全局数据
6 u_char g_ucLocalMac[6];
7 DWORD g_dwGatewayIP;
8 DWORD g_dwLocalIP;
9 DWORD g_dwMask;
10 BOOL GetGlobalData()
11 {
12 PIP_ADAPTER_INFO pAdapterInfo = NULL;
13 ULONG ulLen = 0;
14 //为适配器结构申请内存
15 ::GetAdaptersInfo(pAdapterInfo,&ulLen);
16 pAdapterInfo = (PIP_ADAPTER_INFO)::GlobalAlloc(GPTR,ulLen);
17 //取得本地适配器结构信息
18 if(::GetAdaptersInfo(pAdapterInfo,&ulLen) == ERROR_SUCCESS)
19 {
20 if(pAdapterInfo != NULL)
21 {
22 memcpy(g_ucLocalMac,pAdapterInfo->Address,6);
23 g_dwGatewayIP = ::inet_addr(pAdapterInfo->GatewayList.IpAddress.String);
24 g_dwLocalIP = ::inet_addr(pAdapterInfo->IpAddressList.IpAddress.String);
25 g_dwMask = ::inet_addr(pAdapterInfo->IpAddressList.IpMask.String);
26 }
27 }
28
29 printf("n ---------------------本地主机信息---------------------nn");
30 in_addr in;
31 in.S_un.S_addr = g_dwLocalIP;
32 printf(" IP Address : %sn",::inet_ntoa(in));
33
34 in.S_un.S_addr = g_dwMask;
35 printf(" Subnet Mask : %sn",::inet_ntoa(in));
36
37 in.S_un.S_addr = g_dwGatewayIP;
38 printf(" Default Gateway:%sn",::inet_ntoa(in));
39
40 u_char *p = g_ucLocalMac;
41 printf(" MAC Address:%02X-%02X-%02X-%02X-%02X-%02Xn",p[0],p[1],p[2],p[3],p[4],p[5]);
42
43 printf("nn");
44
45 return TRUE;
46 }
主要使用帮助函数GetAdapterInfo即可。
VS成功实例:
1 // getMac.cpp : 定义控制台应用程序的入口点。
2 //
3
4 #include "stdafx.h"
5 #include <windows.h>
6 #include <stdio.h>
7 #include "Iphlpapi.h" //包含对IP帮助函数的定义
8 #pragma comment(lib,"Iphlpapi.lib")
9 #pragma comment(lib,"WS2_32.lib")//全局数据
10 u_char g_ucLocalMac[6];
11 DWORD g_dwGatewayIP;
12 DWORD g_dwLocalIP;
13 DWORD g_dwMask;
14 BOOL GetGlobalData()
15 {
16 PIP_ADAPTER_INFO pAdapterInfo = NULL;
17 ULONG ulLen = 0;
18 //为适配器结构申请内存
19 ::GetAdaptersInfo(pAdapterInfo,&ulLen);
20 pAdapterInfo = (PIP_ADAPTER_INFO)::GlobalAlloc(GPTR,ulLen);
21 //取得本地适配器结构信息
22 if(::GetAdaptersInfo(pAdapterInfo,&ulLen) == ERROR_SUCCESS)
23 {
24 if(pAdapterInfo != NULL)
25 {
26 memcpy(g_ucLocalMac,pAdapterInfo->Address,6);
27 g_dwGatewayIP = ::inet_addr(pAdapterInfo->GatewayList.IpAddress.String);
28 g_dwLocalIP = ::inet_addr(pAdapterInfo->IpAddressList.IpAddress.String);
29 g_dwMask = ::inet_addr(pAdapterInfo->IpAddressList.IpMask.String);
30 }
31 }
32
33 printf("n ---------------------本地主机信息---------------------nn");
34 in_addr in;
35 in.S_un.S_addr = g_dwLocalIP;
36 printf(" IP Address : %sn",::inet_ntoa(in));
37
38 in.S_un.S_addr = g_dwMask;
39 printf(" Subnet Mask : %sn",::inet_ntoa(in));
40
41 in.S_un.S_addr = g_dwGatewayIP;
42 printf(" Default Gateway:%sn",::inet_ntoa(in));
43
44 u_char *p = g_ucLocalMac;
45 printf(" MAC Address:%02X-%02X-%02X-%02X-%02X-%02Xn",p[0],p[1],p[2],p[3],p[4],p[5]);
46
47 printf("nn");
48
49 return TRUE;
50 }
51
52 int _tmain(int argc, _TCHAR* argv[])
53 {
54 GetGlobalData();
55 return 0;
56 }
结果如下:
- 【Dev Club 分享】安卓单元测试:What, Why and How
- WordPress记住评论用户信息的js版本,直接操作cookie无视缓存
- 禁止百度转码和百度快照缓存的META声明
- 单机MySQL数据库优化推荐的编译安装参数
- Linux网络实时流量监测工具iftop的安装使用
- Golang学习--GroupCache的使用
- 基于 Webpack & Vue & Vue-Router 的 SPA 初体验
- GO语言高并发学习心得体会例
- Go 语言实现的网络连接池:Pool
- go语言操作redis连接池的方法
- WebVR如此近 - three.js的WebVR示例程序解析
- 【Dev Club分享】基于RxJava的一种MVP实现
- Android 动态链接库加载原理及 HotFix 方案介绍
- 如果裸写一个goroutine pool
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 三种动态控制SAP CRM WebClient UI assignment block显示与否的方法
- TCGA数据库中癌症名称缩写
- CloudFlare自定义节点优化网站
- 什么是SSL?为什么要为WordPress网站使用SSL?
- R语言再保险合同定价案例研究
- SAP CRM附件的技术属性设计原理
- R语言对混合分布中的不可观测与可观测异质性因子分析
- R替换函数gsub
- R语言泊松回归对保险定价建模中的应用:风险敞口作为可能的解释变量
- asp dotnet core 提供大文件下载的测试
- R语言模拟人类生活预期寿命动态可视化动画图gif
- Python遍历字典
- R语言随机森林模型中具有相关特征的变量重要性
- WPF 使用 Direct Manipulation 的方法
- R语言分析负利率下金融市场:负利率和年金价值的变化