VC++获取外网IP的几个方法
来源:互联网 发布:asp管理系统源码 编辑:程序博客网 时间:2024/05/21 07:48
一、CHttpFile方式
#include <afxinet.h>
int GetNetIp(char *IpAddr)
{
try
{
CInternetSession session("HttpClient");
char * url = "http://bot.whatismyipaddress.com/";
CHttpFile* pfile = (CHttpFile *)session.OpenURL(url);
DWORD dwStatusCode;
pfile -> QueryInfoStatusCode(dwStatusCode);
if(dwStatusCode == HTTP_STATUS_OK)
{
CString content;
CString data;
while (pfile->ReadString(data))
{
content += data + "\r\n";
}
content.TrimRight();
strcpy(IpAddr, content);
}
pfile -> Close();
delete pfile;
session.Close();
return 0;
}
catch(...)
{
return -1;
}
}
二、URLDownloadToFile方式
int GetIp(char *IpAddr)
{
int GetIp(char *IpAddr)
{
try
{
char szTempFile [MAX_PATH];
char szTempPath [MAX_PATH];
GetTempPath(MAX_PATH, szTempPath);
UINT nResult=GetTempFileName (szTempPath, _T ("ip"),0,szTempFile);
int ret=URLDownloadToFile(NULL,"http://www.ip138.com/ip2city.asp",szTempFile,0,NULL);
if (ret==S_OK) //如果下载成功
{
FILE *f;
f=fopen(szTempFile,"rb");
if(f)
{
fseek(f,0,SEEK_END);//得到文件大小
int ilength=ftell(f);
fseek(f,0,SEEK_SET);
if(ilength>0)
{
char szMyIp[16] = {0};
char fBuffer[256] = {0};
fread(fBuffer, 256, 1, f);
int iBegin,iEnd;
for (int i = 0; i < ilength; i++)
{
//取得"["的位置
if (fBuffer[i] == 0x5b)
iBegin = i;
//取得"]"的位置
if (fBuffer[i] == 0x5d)
{
iEnd = i;
break;
}
}
memcpy(szMyIp, fBuffer + iBegin + 1, iEnd - iBegin - 1);
strcpy(IpAddr, szMyIp);
return 0;
}
}
}
return 1;
}
catch(...)
{
return -1;
}
}
}
- VC++获取外网IP的几个方法
- VC获取外网IP
- VC获取外网IP
- 获取局域网外网Ip的方法
- 获取外网IP的方法
- 几个获取IP的接口
- VC中获取主机名和IP地址的方法
- VC中获取主机名和IP地址的方法
- 用VC获取本机IP地址列表的方法
- VC中获取主机名和IP地址的方法
- VC中获取主机名和IP地址的方法
- vc 简单获取外网IP
- VC获取外网IP函数
- VC--获取本机 局域网IP 和外网IP
- VC--获取本机 局域网IP 和外网IP
- VC--获取本机 局域网IP 和外网IP
- 获取IP的方法
- 获取IP的方法
- Oracle 维护常用SQL
- 杭电2023 求平均成绩
- hdu 1257最少拦截系统(贪心)
- JUnit之测试方法
- openfire smack消息回执设置,处理掉包问题
- VC++获取外网IP的几个方法
- Android Log
- unity3d中的物体获取和访问方法总结
- 杭电4505 小Q系列故事——电梯里的爱情
- 【STL】list基础
- sql 使用单引号
- 杭电2097 Sky数
- HTML Canvas实例 曲线弹跳的小球
- 杭电ACM1251——统计难题~简单字典树的应用