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方法 ... 
随机推荐
- redis 如何查看版本
			./redis-cli -h 127.0.0.1 info | grep 'redis_version' redis-server -v 
- C++运行时类型识别
			通过运行时类型识别(RTTI),程序能够使用基类的指针或引用来检索这些指针或引用所指对象的实际派生类型. 通过下面两个操作符提供 RTTI: 1. typeid 操作符,返回指针或引用所指对象的实际类 ... 
- Myeclipse 方法中文注释看不到
			参考以下几种解决方式: 1 改变整个文件类型的编码格式 1) eclipse->window->preferences->General->Content Types 2) 找 ... 
- 基本的Sql编写注意事项
			基本的Sql编写注意事项 尽量少用IN操作符,基本上所有的IN操作符都可以用EXISTS代替. 不用NOT IN操作符,可以用NOT EXISTS或者外连接+替代. Oracle在执行IN子查询时,首 ... 
- Java练习 SDUT-3328_JAVA判断合法标识符
			JAVA判断合法标识符 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 输入若干行字符串,判断每行字符串是否可以作为JA ... 
- qt开发ROS遇到这个问题 find_package(catkin) failed. catkin was neither found in the workspace nor in the CMAKE_PREFIX_PATH...
			为了实现用Qt开发ROS界面开发环境,我几乎参阅了网上所有的配置教程,安装了多个版本的qt,在ubuntu14.04和ubuntu16.04上分别进行了配置,最后都成功了.不得不说的是用QTCREAT ... 
- Flask学习之九 分页
			英文博客地址:http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-ix-pagination 中文翻译地址:http:// ... 
- Java之Socket与HTTP区别
			我们都知道TCP/IP协议共分四层: ① 链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡.它们一起处理与电缆(或其他任何传输媒介)的物理接口细节. ... 
- Hbase架构与实现
- oracle函数 add_months(d1,n1)
			[功能]:返回在日期d1基础上再加n1个月后新的日期. [参数]:d1,日期型,n1数字型 [返回]:日期 
