本机名、IP、MAC都是一些比较常用网络参数,怎么用C/C++获取呢?

研究了两三个小时...

需要说明的都在代码注释里

 #include <stdio.h>
#include <Windows.h>
#include <IPHlpApi.h> #pragma comment(lib,"ws2_32.lib") // Socket静态库,取本机IP用
#pragma comment(lib,"IPHlpApi.lib") // 发送ARP报文要用的静态库,取MAC用 /*
取主机名
成功返回主机名,失败返回NULL.
*/
char *MyGetHostName(void); /*
取本机IP
成功返回本机IP,失败返回NULL.
*/
char *MyGetHostIp(void); /*
取本机MAC
成功返回本机MAC,失败返回NULL.
*/
char *MyGetHostMac(void); int main(void)
{
char *lpName = NULL;
char *lpIp = NULL;
char *lpMac = NULL; lpName = MyGetHostName();
lpIp = MyGetHostIp();
lpMac = MyGetHostMac();
printf("PCName : %s\n", lpName);
printf("IPAddr : %s\n", lpIp);
printf("M A C : %s\n", lpMac); free(lpName);
free(lpIp);
free(lpMac);
system("pause");
return ;
} char *MyGetHostName(void)
{
char *lpName = NULL;
DWORD dwLen = ; GetComputerName(NULL, &dwLen);
lpName = (char *)malloc(dwLen);
memset(lpName, , dwLen);
GetComputerName(lpName, &dwLen);
return (lpName ? lpName : NULL);
} char *MyGetHostIp(void)
{
char *ip = NULL;
WSADATA wsaData = { };
struct hostent *phostinfo = NULL; ip = (char *)malloc(sizeof(char)* );
memset(ip, , );
WSAStartup(MAKEWORD(, ), &wsaData);
phostinfo = gethostbyname("");
lstrcpyn(ip, inet_ntoa(*(struct in_addr *)(*phostinfo->h_addr_list)), );
WSACleanup();
if (ip)
{
return ip;
}
else {
free(ip);
return NULL;
}
} char *MyGetHostMac(void)
{
IPAddr ip = inet_addr(MyGetHostIp());
PVOID *pMac = NULL;
ULONG MacAddr[] = { }; // Mac地址长度6字节
ULONG uMacSize = ; // 通过ARP报文响应获取MAC地址
DWORD dwRet = SendARP(ip, , &MacAddr, &uMacSize);
if (dwRet == NO_ERROR)
{
BYTE *bPhyAddr = (BYTE *)MacAddr; if (uMacSize)
{
char *sMac = (char *)malloc(sizeof(char)* );
int n = ; memset(sMac, , );
sprintf_s(sMac, (size_t), "%.2X-%.2X-%.2X-%.2X-%.2X-%.2X", (int)bPhyAddr[], (int)bPhyAddr[], (int)bPhyAddr[], (int)bPhyAddr[], (int)bPhyAddr[], (int)bPhyAddr[]);
return sMac;
}
else
{
printf("Mac地址获取失败!\n");
}
}
else
{
printf("ARP报文发送失败:%d\n",dwRet);
}
return NULL;
}

效果图:

C/C++获取本机名+本机IP+本机MAC的更多相关文章

  1. Python - 获取本机IP地址、Mac地址

    Python - 获取本机IP地址.Mac地址 在python中获取ip地址和在php中有很大不同,在php中往往比较简单.那再python中怎么做呢? 直接看代码: # Python - 获取本机I ...

  2. win7下的IP-主机名映射

    今天学了个技巧,win7下有个目录:C:\Windows\System32\drivers\etc 该目录下有个文件: hosts 在这个文件里面我们可以映射IP-主机名: 127.0.0.1 loc ...

  3. C++获取本机用于连接的IP地址

    最近写个程序需要获取本机用于连接的IP地址,经过很多的尝试后,最终使用的方法如下: 使用cmd命令    netstat  | findstr “192.168.6.66:3333” > D:\ ...

  4. windows server 2012 AD 活动目录部署加入域并创建域用户(寻找视频课程)(计算机加入域其实是本计算机的管理员账号(本机名)加入域,关联账号即可在已经加入域的计算机上面登录)

    windows server 2012 AD 活动目录部署加入域并创建域用户(寻找视频课程)(计算机加入域其实是本计算机的管理员账号(本机名)加入域,关联账号即可在已经加入域的计算机上面登录) 一.总 ...

  5. 获取本机的IP地址和mac地址

    1. 以前一直用ipconfig来查看ip地址,哈哈哈,现在发现挺好玩 #获取本机的IP地址和mac地址 import uuid import socket def get_mac_address() ...

  6. JS获取客户端IP地址、MAC和主机名七种方法

    一.使用JS获取客户端IP的几个方法方法一(只针对IE且客户端的IE允许AcitiveX运行,通过平台:XP,SERVER03,2000).获取客户端IP代码:<HTML><HEAD ...

  7. JS获取客户端IP地址、MAC和主机名的7个方法汇总

    今天在搞JS(javascript)获取客户端IP的小程序,上网搜了下,好多在现在的系统和浏览器中的都无效,很无奈,在Chrome.FireFox中很少搞到直接利用ActiveX获取IP等的JS脚本. ...

  8. C++获得本机所有网卡的IP和MAC地址信息

    一台机器上可能不只有一个网卡,但每一个网卡只有一个MAC地址,而每一个网卡可能配置有多个IP地址:如平常的笔记本电脑中,就会有无线网卡和有线网卡(网线接口)两种:因此,如果要获得本机所有网卡的IP和M ...

  9. 使用Python获取计算机名,ip地址,mac地址等等

    获取计算机名 # 获取计算机名,常用的方法有三种 import os import socket # method one name = socket.gethostname() print(name ...

随机推荐

  1. [转]Jquery Mobile dialog的生命周期

    本文转自:http://www.cnblogs.com/jackhuclan/archive/2012/04/05/2432972.html JQuery Mobile对htm5的移动开发绝对是个好用 ...

  2. Linux下wget下载软件小技巧以及安装jdk、tomcat与ftp服务器

    一.ftp的安装 装个ftp搞了一下午,感觉以前没那么麻烦的呀,结果到晚上才发现是实验室网的问题,换连手机的热点马上可以了,真是尴尬,把基本安装步骤记录一下: 1.检查安装vsftpd软件 使用如下命 ...

  3. Nginx实践:(1) Nginx安装及日志配置

    1. 安装 (1)  Nginx下载地址:https://nginx.org/download/nginx-1.14.0.tar.gz (2)  安装时可能出现依赖库不存在,比如prec包,可以使用y ...

  4. [HZOI 2015]复仇的序幕曲

    [题目描述] 你还梦不梦痛不痛,回忆这么重你怎么背得动 ----序言 当年的战火硝烟已经渐渐远去,可仇恨却在阿凯蒂王子的心中越来越深 他的叔父三年前谋权篡位,逼宫杀死了他的父王,用铁血手腕平定了国内所 ...

  5. mongodb 用户权限控制

    MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),今天特地花了一点时间研究了一下,研究成果如下: 注:研究成果基于W ...

  6. MVC数据库问题(更新,添加字段)

    1.更新模型之后,在"程序包管理控制器"中输入Update-database,就能自动完成更新 2.对于Update-database之后报错:Automatic migratio ...

  7. 基于vue2+nuxt构建的高仿饿了么(2018版)

    前言 高仿饿了么,以nuxt作为vue的服务端渲染,适合刚接触或者准备上vue ssr的同学参考和学习 项目地址如遇网络不佳,请移步国内镜像加速节点 效果演示 查看demo请戳这里(请用chrome手 ...

  8. css3之图形绘制

    由于近期的项目中出现了不规则的边框和图形, 所以重新温习一下CSS3的图形绘制...样式绘制的图形比图片的性能要好,体验更佳,关键一点是更加有趣! 以下几个例子主要是运用了css3中border.bo ...

  9. Mysql慢查询 [第二篇]

    一.简介 pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog.General log.slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdu ...

  10. vue 钩子函数

    beforeRouteEnter 方法名称: beforeRouteEnter 调用时机: 切换路由之前,调用该方法时,页面还没有切换 next调用时机: activated 之后 注意事项: thi ...