获取本机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")

最新文章

  1. BZOJ 2002 &amp;&amp; BZOJ 2409 LCT &amp;&amp; BZOJ 3282 初步练习
  2. 对restful的理解
  3. 格式化namenode,造成无法启动datanode
  4. 3kb jQuery代码搞定各种树形选择。
  5. 在getView方法产生给用户item的视图以及数据
  6. 设置myeclipse 项目编码(UTF-8)
  7. JSTL 核心标签库
  8. zw版【转发&#183;台湾nvp系列Delphi例程】HALCON AffineTransImage
  9. Java基础-事件处理
  10. MSP430推荐网站
  11. Java [leetcode 23]Merge k Sorted Lists
  12. CSS实现圆角,三角,五角星,五边形,爱心,12角星,8角星,圆,椭圆,圆圈,八卦
  13. Task schedule
  14. Java中对象的上转型对象
  15. React.js小书总结
  16. python url监控 并邮件报警
  17. SP2-0734: 未知的命令开头 &quot;exp wlc/ra...&quot; - 忽略了剩余的行。
  18. alias重命名命令
  19. Spring 环境与profile(二)——Properties with Spring
  20. Oracle Data Integrator学习资料

热门文章

  1. Codeforces 336C
  2. photoshop正确的打开方式
  3. 2013年山东省第四届ACM大学生程序设计竞赛J题:Contest Print Server
  4. 【New Feature】阿里云快照服务技术解析
  5. 高可用Kubernetes集群原理介绍
  6. 基于GIS的空间分析功能分析芝加哥小熊队和白袜队的球迷范围
  7. Mysql 数据库优化(一)
  8. 最长公共子序列(LCS)、最长递增子序列(LIS)、最长递增公共子序列(LICS)
  9. C++构造函数和文件组织
  10. 云原生生态周报 Vol. 7 | Docker 再爆 CVE