下载本文示例代码
为了创建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客户端应用程序的具体步骤和细节。(待续)
下载本文示例代码
阅读(365) | 评论(0) | 转发(0) |