本机名、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. WSGI学习系列WSME

    Introduction Web Services Made Easy (WSME) simplifies the writing of REST web services by providing ...

  2. svn使用&&常用操作&&问题处理

    第一部分: SVN使用 svn介绍 即subversion的简称. 版本控制系统(CVS)包括集中式版本控制系统(CVCS)和分布式版本控制系统(DCVS).svn是集中式版本控制系统. 可以用于团队 ...

  3. jQuery OCUpload一键上传文件

    1 引入相关的js文件 <!--引入OCUpload的js文件,之前需要引入jQuery的js文件 --> <script type="text/javascript&qu ...

  4. php验证码处理

    //基本步骤 1,先创建一张指定宽度和高度的一张验证码图片 imagecreatetruecolor() 2,给验证码图片添加背景颜色 和文字颜色 imagecolorallocate() 3, 在指 ...

  5. 几个CSS的黑科技

    这里的黑科技其实就是一些CSS中不怎么为人所知但在解决某些问题的时候很溜的属性. border-radius 很多开发者估计都没有正确认识这个border-radius,因为基本上很多人都是这么用的: ...

  6. jq获取页面距离

    $(window).height() //获取的是当前可视窗口的高度,也就是用户能看到的窗口的高度,是不变的(在窗口大小不变的前提下) $(document).height() //获取的是窗口内文档 ...

  7. CentOS7安装MongoDB3.6企业版

    参考资源 https://docs.mongodb.com/manual/tutorial/install-mongodb-enterprise-on-red-hat/   下载安装 配置yum仓库 ...

  8. Deloyment Descriptor Web.xml Analysis

    https://javaee.github.io/tutorial/webapp003.html Web.xml详解分析: 该web.xml文件包含Facelets应用程序所需的几个元素.使用NetB ...

  9. Spring课程 Spring入门篇 3-1 Spring bean装配(上)之bean的配置项及作用域

    课程链接: 本节主要讲了四大块 1 bean的作用域 2 bean作用域代码演练 3 单例 多例应用场景 4 bean的配置项(不重要) 1 bean的作用域 1.1 singleton :单例 1. ...

  10. 数组:获取GET的键名

    1.今天仓鼠遇到这个情况:通过$_GET获取参数,但是参数变成了键名形式 2.那仓鼠想要拿到这个键名,那就要:使用array_keys()获取数组中的所有键名,然后进行转换 代码如下: 结果: 以上 ...