WEB开发网
开发学院软件开发VC 用WinInet开发Internet客户端应用指南(一) 阅读

用WinInet开发Internet客户端应用指南(一)

 2009-11-11 20:30:02 来源:WEB开发网   
核心提示:下表描述了一个Internet客户端程序实现的一般步骤:(表一) 实现 方法 建立一个连接 创建CInternetSession对象,它是WinInet Internet客户应

下表描述了一个Internet客户端程序实现的一般步骤:

(表一)

实现 方法
建立一个连接 创建CInternetSession对象,它是WinInet Internet客户应用的前提条件
打开一个URL 建立一个连接,调用CInternetSession::OpenURL

函数,返回一个只读资源对象

读取 URL 数据 打开一个URL,调用CInternetSession::QueryOption
查询 Internet 选项设置 建立一个连接,调用CInternetFile::Read
设置一个Internet选项 建立一个连接,调用CInternetSession::SetOption
设置一个用状态信息调用的函数 建立一个连接,调用CInternetSession::EnableStatusCallback

重写CInternetSession::OnStatusCallback函数

关闭连接 用CInternetSession对象方法,清除打开的连接

为了创建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客户端应用程序的具体步骤和细节。(待续)

上一页  1 2 

Tags:WinInet 开发 Internet

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接