// 获取电脑IP地址
CString CDataIO::GetIP()
{
// 获取公网ip地址
HINTERNET hInternet = InternetOpen(L"Microsoft Internet Explorer", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (hInternet == NULL)
{
// 打开网络会话失败
return _T("");
}
HINTERNET hConnect = InternetOpenUrl(hInternet, L"http://whois.pconline.com.cn/ipJson.jsp?json=true", NULL, 0, INTERNET_FLAG_RELOAD, 0);
if (hConnect == NULL)
{
// 打开URL失败
InternetCloseHandle(hInternet);
return _T("");
}
char buffer[4096] = { 0 };
DWORD bytesRead;
CString data;
BOOL bRet;
while (TRUE)
{
bRet = InternetReadFile(hConnect, buffer, sizeof(buffer), &bytesRead);
if (!bRet || (0 == bytesRead))
break;
buffer[bytesRead] = '\0';
data.Append(CA2T(buffer), bytesRead);
}
InternetCloseHandle(hConnect);
InternetCloseHandle(hInternet);
// 去除前后换行符号
data = data.Trim();
// 解析JSON数据
CString ip, address;
int pos1 = data.Find(_T("\"ip\":\"")) + 5;
int pos2 = data.Find(_T("\""), pos1 + 1);
ip = data.Mid(pos1 + 1, pos2 - pos1 - 1);
pos1 = data.Find(_T("\"addr\":\"")) + 7;
pos2 = data.Find(_T("\""), pos1 + 1);
address = data.Mid(pos1 + 1, pos2 - pos1 - 1);
CString strIP;
strIP.Format(_T("IP:%s Addr:%s"), ip, address);
return strIP;
}
【MFC】获取公网IP地址
最新推荐文章于 2024-08-27 22:40:22 发布