VC++编写IP所属区域查询工具

23 篇文章 0 订阅
14 篇文章 0 订阅

实现原理
我们访问“http://www.baidu.com/s?wd=202.102.123.22&cl=3”这个网址就会返回IP对应的物理地址,因而我们的实现思路就是动态提交IP地址到这个网址,再取回结果。当然,这个工作可不能手工完成,因为这样太笨了
技术重点
虽然我们可以使用HTTP协议来实现,但这样会有点麻烦,所以本文使用了微软提供的 CInternetSession和CHttpFile类来实现,通过CInternetSession的构造函数构建一个连接会话,然后通过 CInternetSession类的OpenURL方法来取得CHttpFile的对像,最后通过ReadString读取返回信息并提取出需要的信息即可。

具体实现
首先新建一个对话框程序,并使用“#include”头文件;然后加入如图1所示的相应控件,之后再为解析按钮加入如下的代码即可。

void ::OnOK()
{
CString m_ReturnStr="";//要返回的物理地址
CString m_ip=""; //需要解析的IP地址
CString straddress("http://www.baidu.com/s?wd=");
//构造访问的地址
GetDlgItem(IDC_EDIT1)->GetWindowText(m_ip);
straddress+=m_ip;
straddress+="&cl=3";
CInternetSession mySession(NULL,0);
//构造一个新的会话
CHttpFile* myHttpFile=NULL;
CString strline;
myHttpFile=(CHttpFile*)mySession.OpenURL(straddress);//打开网址
if(myHttpFile==NULL)
{
MessageBox("OpenURL ERROR!");
return;
}
while(myHttpFile->ReadString(strline))//读取返回的内容
{
m_ReturnStr+=strline;
}
m_ReturnStr.Delete(0,m_ReturnStr.Find("来自")+6);
CString str=m_ReturnStr.Left(m_ReturnStr.Find(" "));
myHttpFile->Close ;
mySession.Close ;
}

 
经过上面的代码处理后,最后的str中得到的就是我们需要的地址了,是不是很简单?呵呵,要知道,简单的就是美丽的
[学习下攻取网页源码的方法吧,这个在我试验的时候已经不能用了,具体的看下面我提供的方式,异曲同工]
百度的IP数据库也是从 IP138上来的
进入 IP138 鼠标到查询上可以看见他的 链接网页是ips.asp
查询格式为“http://www. ip138.com/ips8.asp?ip=120.14.248.125”
可以把这个网页的代码获取来然后进行拆分获取,代码是GB格式的,不用转码直接使用即可
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值