随笔-5  评论-1  文章-0  trackbacks-0

下列代码摘录示范了如何创建一个简单的浏览器、下载一张网页、通过FTP操作一个文件和查找一个Gopher文件。它们并不是一个完整的例子,其中不包含异常处理,只是本人最近写程序的一点总结而已。

1 创建一个非常简单的浏览器
#include <afxinet.h>
//假设URL的名字已经被初始化了
CInternetSession session("My Session");
CStdioFile* pFile=NULL;
//使用一个URL,并显示一张网页
while(lpszURL=DisplayPage(...))
{
   pFile=session.OpenURL(lpszURL);
   while(pFile->Read(szBuff,1024)>0)
   {
          //读取文件...
   }
   delete pFile;
}
session.Close();

2 下载一张网页
#include <afxinet.h>
//假设服务器、端口号和URL名字已经初始化了
CInternetSession session("My Session");
CHttpConnection* pSever=NULL;
CHttpFile* pFile=NULL;
try
{
  CString strServerName;
  INTERNET_PORT nPort;

  pServer=session.GetHttpConnection(strServerName,nPort);
  pFile=pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET,strObject);
  pFile->AddRequestHeaders(szHeaders);
  pFile->SendRequest();
  pFile->QueryInfoStatusCode(dwRet);

  if(dwRet==HTTP_STATUS_OK)
  {
    UINT nRead=pFile->Read(szBuff,1023);
 while(nRead>0)
 {
    //读取文件
 }
  }
  delete pFile;
  delete pServer;
}
catch(CInternetException* pEx)
{
  //捕捉WinInet的错误
}
session.Close();

3 通过FTP操作一个文件
#include <afxinet.h>
//假设服务器名和文件名已经初始化了
CInternetSession session("My FTP Session");
CFtpConnection* pConn=NULL;

pConn=session.GetFtpConnect(lpszServerName);
//取得文件
if(!pConn->GetFile(pstrRemoteFile,pstrLocalFile))
   //显示一个错误
delete pConn;
session.Close();

4重新获得一个Gopher目录
#include <afxinet.h>
//假设文件名已经初始化了
CInternetSession session("My Gopher Session");
CGopherConnection* pConn=NULL;
CGopherFileFind* pFile;

pConn=session.GetGopherConnection("gopher.yousite.com");
pFile=new CGopherFileFind(pConn);
BOOL bFound=pFile->FindFile(lpszFileToFind);
while(bFound)
{
  bFound=pFile->FindNextFile();
  //重新获得找到的文件属性
}
delete pFile;
delete pConn;
session.Close();

当在使用WinInet类库时,用户可以使用应用程序的CInternetSession对象的成员函数
OnStatusCallback来获取状态信息。如果用户继承了其自己的CInternetSession对象,
编写了超越函数OnStatusCallback并允许状态的回调,MFC将把此次国际互连网对话的
所有活动的进度信息作为参数,调用用户的OnStatusCallback函数。

posted on 2006-02-16 16:12 zoj 阅读(1018) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理