MFC 获取本机IP、网络ip和物理地址
获取本机Ip
CString CNet::GetLocalIP()
{
WSADATA wsaData;
int err = WSAStartup(MAKEWORD(, ), &wsaData);
if (err != )
{
return "";
} char szHostName[MAX_PATH] = { };
int nRetCode;
nRetCode = gethostname(szHostName, sizeof(szHostName)); char* lpLocalIP;
PHOSTENT hostinfo; if (nRetCode != )
{
WSACleanup();
return "";
} hostinfo = gethostbyname(szHostName);
lpLocalIP = inet_ntoa(*(struct in_addr*)*hostinfo->h_addr_list); WSACleanup(); return lpLocalIP;
}
获取外网ip:原理是到用百度搜索下本机ip,然后把这个网页下载下来,解析这个文件,找到本机ip。
CString CNet::GetInternetIP()
{
char buf[] = { };
char chURL[] = {"https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E6%9C%AC%E6%9C%BAip&rsv_pq=bf583ea000057300&rsv_t=a528kuIZ1osYq0OKQDWPTA3DASK7g6NwL8LPMmrOCGIYzoh8w9D%2FjTTt2tk&rqlang=cn&rsv_enter=1&rsv_sug3=1" };
CString strPath = "html.tmp"; URLDownloadToFile(, chURL, strPath, , NULL); std::string str_ip("");
CString strLine;
CStdioFile file;
int iCount = ;
if (file.Open(strPath, CFile::modeRead))
{
while (file.ReadString(strLine))
{
iCount++;
std::string sLine = strLine;
std::string ascii = UTF_82ASCII(sLine);
int index = ascii.find("本机IP");
if (index != -)
{
str_ip = ascii.substr(index + strlen("本机IP") + );
break;
}
}
}
file.Close();
CString strIP;
strIP = str_ip.c_str();
strIP = strIP.Trim();
strIP.Replace(" ", "");
strIP.Replace("</span>", " ");
return strIP;
}
获取mac地址:使用GetAdaptersInfo函数,当然这个函数获取出来的信息也包含本地ip
CString CNet::GetMacAdress()
{
char MAC[] = { };
CString strMac;
PIP_ADAPTER_INFO pAdapterInfo;
PIP_ADAPTER_INFO pAdapter = NULL;
DWORD dwRetVal = ;
pAdapterInfo = (IP_ADAPTER_INFO*)malloc(sizeof(IP_ADAPTER_INFO));
ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO); dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen); if (dwRetVal == ERROR_BUFFER_OVERFLOW)
{
free(pAdapterInfo);
pAdapterInfo = (IP_ADAPTER_INFO *)malloc(ulOutBufLen);
dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen);
} if (dwRetVal == NO_ERROR)
{
pAdapter = pAdapterInfo;
while (pAdapter)
{
sprintf_s(MAC, "%02X-%02X-%02X-%02X-%02X-%02X", pAdapter->Address[], pAdapter->Address[], pAdapter->Address[], pAdapter->Address[], pAdapter->Address[], pAdapter->Address[]);
strMac = MAC;
pAdapter = pAdapter->Next;
}
}
else
{
strMac = "";
}
free(pAdapterInfo);
return strMac;
}
GetAdaptersInfo函数需要引入的头文件和lib文件如下;
#include <IPHlpApi.h>
#pragma comment(lib,"Iphlpapi.lib")
MFC 获取本机IP、网络ip和物理地址的更多相关文章
- js获取本机的网络IP地址
JavaScript是一门脚本语言,是不能操作文件,读取本地信息的,所以想要获取IP,还需要借助后端技术.方法如下: //获取本机的网络ip地址 function jsonpCallback(res) ...
- LabVIEW 获取本机多个ip地址
图 1 网上见了好多设置的,都没讲清楚,在这里整理一下本机ip地址的获取问题.关键在"字符串向ip地址转换"函数的设置上面,见下图2,选择多输出就能获取本机的多个ip地址,若不 ...
- java获取本机名称、IP、MAC地址和网卡名称
java获取本机名称.IP.MAC地址和网卡名称 摘自:https://blog.csdn.net/Dai_Haijiao/article/details/80364370 2018年05月18日 1 ...
- Java 获取本机局域网内IP
主要涉及NetworkInterface.Enumeration.InetAddress等类 /* 获取本机网内地址 */ public static InetAddress getInet4Addr ...
- Python获取本机的mac,ip,name
Python获取mac 获取计算机名字和ip(内网ip) 指定网卡ip
- Delphi获取本机所有的IP
安装Indy uses IdStackWindows; var Isw:TIdStackWindows; slist:TStringList; begin Isw:=TIdStackWindows. ...
- C# 获取本机的所有ip地址,并过滤内网ip
private void Initialization_Load(object sender, EventArgs e) { cboxip.Items.Add("请选择IP地址") ...
- 获取本机的ip
https://4sysops.com/archives/ipv6-tutorial-part-6-site-local-addresses-and-link-local-addresses/ In ...
- Python 优雅获取本机 IP 方法【转】
转自:https://www.cnblogs.com/lfxiao/p/9672975.html 见过很多获取服务器本地IP的代码,个人觉得都不是很好,例如以下这些 不推荐:靠猜测去获取本地IP方法 ...
随机推荐
- 安装vagrant&virtualBox
https://blog.csdn.net/dream_188810/article/details/78218073 VirtualBox是一款开源免费的虚拟机软件(之前一直使用vm,vm功能较多, ...
- swiper踩过的哪些坑
最近,苦恼于各种轮播的需求,每个自己都要自己写,写的挺烦的.终于,在网上发现了swiper插件,发现还是挺实用的,但其中还是踩过了不少的坑,其中有不少都是很简单的问题,但到发现的时候都是花了不少时间, ...
- HDU_1061:Rightmost Digit
Problem Description Given a positive integer N, you should output the most right digit of N^N. Inp ...
- php上传文件与图片到七牛的实例详解
上传文件到七牛最简单的方式就是使用七牛官方最新的SDK 用composer安装PHP SDK composer require qiniu/php-sdk 上传文件到七牛 use Qiniu\Auth ...
- GIT 公钥配置
1.下载git 2.ssh-keygen -t rsa -C "xxx@xxx.com" 3.cd ~/.ssh 4.ls 5.cat id_rsa.pub 或者C:\User\x ...
- python初识参数
1. 什么是函数? f(x) = x + 1 y = x + 1 函数是对功能或者动作的封装 2. 函数的语法和定义 def 函数名(): 函数体 调用: 函数名() 3. 关于函数的返回值 retu ...
- PyODPS DataFrame 处理笛卡尔积的几种方式
PyODPS 提供了 DataFrame API 来用类似 pandas 的接口进行大规模数据分析以及预处理,本文主要介绍如何使用 PyODPS 执行笛卡尔积的操作. 笛卡尔积最常出现的场景是两两之间 ...
- 容器安全拾遗 - Rootless Container初探
摘要: Docker和Kubernetes已经成为企业IT架构的基础设施,安全容器运行时越来越被关注.近期Docker 19.03中发布了一个重要的特性 “Rootless Container”,在提 ...
- laravel框架手机发送验证码
https://blog.csdn.net/sunny_lg/article/details/52471225 现在登录注册时 我们的验证方法 不在单一化 手机发送验证码 已经成为常态 让我们 一起 ...
- MySQL_连表查询
连表查询 连表查询通常分为内连接和外连接.内连接就是使用INNER JOIN进行连表查询:而外连接又分为三种连接方式,分别是左连接(LEFT JOIN).右连接(RIGHT JOIN).全连接(FUL ...