實現原理
我們訪問“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 ;
}