Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1265901
  • 博文数量: 960
  • 博客积分: 52560
  • 博客等级: 大将
  • 技术积分: 13131
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-31 14:15
文章分类

全部博文(960)

文章存档

2011年(1)

2008年(959)

我的朋友

分类: C/C++

2008-08-01 16:54:22

下载本文示例代码
为了创建Internet客户端程序,MFC提供了如下的C 类和全程函数:

C 类

CInternetSession (父类 CObject)

CInternetConnection (父类 CObject)

    CFtpConnection

    CGopherConnection

    CHttpConnection

CInternetFile(父类 CStdioFile)

    CGopherFile

    CHttpFile

CFileFind(父类 CObject)

    CFtpFileFind

    CGopherFileFind

CGopherLocator(父类 CObject)

CInternetException(父类 CException)      
全程函数:
AfxParseURL

AfxGetInternetHandleType

AfxThrowInternetException    
这些类和全程函数除CFileFind在AFX.H里声明之外,其余都在AFXINET.H文件里声明。它们对HTTP、FTP和Gopher等协议进行了高度抽象,形成了一套高级API函数。 利用这些API可以快速直接地开发Internet应用。例如,连接到FTP服务器一般需要几个步骤,而且需要做一些底层处理。但使用上述的MFC类提供的API,只需要对CInternetSession::GetFTPConnection进行一次调用,便可以轻松建立连接。
大家知道,每一个Internet应用其数据交换都是建立在Internet会话(Session)的基础之上的,MFC是通过CInternetSession类对象来实现Internet会话的。用这个类不仅可以创建会话,而且可以创建几个并发的Internet会话。
为了与服务器进行通讯,除了要创建CInternetSession对象之外,还必须创建CInternetConnection对象,针对不同的协议,CInternetConnection对象有三种类型:
  • CInternetSession::GetFtpConnection
  • CInternetSession::GetHttpConnection
  • CInternetSession::GetGopherConnection
这些函数调用并不会读写服务器上的文件。如果你想要读写数据,必须要打开文件才能操作。其处理流程应该是这样的:
  • 首先创建 CInternetSession 对象实例
  • 如果创建的Session要读写文件,则必须创建 CInternetFile 对象实例(或者是它的子类CHttpFile、CGopherFile 对象实例)。其实,读取数据最容易的方式是调用 CInternetSession::OpenURL函数。 这个函数解析你提供的统一资源定位符(URL),然后打开与URL指定的服务器连接,同时返回一个只读的CInternetFile对象。CInternetSession::OpenURL不针对特定的协议类型——不管是FTP还是HTTP都可以调用,它甚至可以处理本地文件,此时返回的是CStdioFile,而不是CInternetFile。
  • 如果创建的Session不读写文件,而是要实现其它的任务,如删除某个FTP目录下的文件等,则你不需要创建CInternetFile实例。
创建CInternetFile对象的方法有两种:
  • 如果用CInternetSession::OpenURL建立与服务器的连接,调用返回CStdioFile。
  • 如果用CInternetSession::GetFtpConnection、GetGopherConnection或者CHttpConnection::OpenRequest建立与服务器的连接,你必须调用相应的CFtpConnection::OpenFile、CGopherConnection::OpenFile或者CHttpConnection::OpenRequest,返回的内容也与CInternetFile、CGopherFile或者CHttpFile对应。
综上所述,实现Internet客户端应用的步骤因协议而异。要看你是创建基于OpenURL的一般Internet客户端应用,还是使用GetXXXConnection函数之一针对特定协议的Internet客户端应用。
在后继文章中我们将进一步讨论用WinInet实现Internet客户端应用程序的具体步骤和细节。(待续)
下载本文示例代码
阅读(340) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~