文档介绍:该【第6章WinInet编程 】是由【毒药 Posion】上传分享,文档一共【37】页,该文档可以免费在线阅读,需要了解更多关于【第6章WinInet编程 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。第6章WinInet编程
*
WinInet是WindowsInternet扩展应用程序高级编程接口,是专为开发具有Internet功能的客户端应用程序而提供的。它有两种形式:WinInetAPI包含一个C语言的函数集(Win32Internetfunctions),MFCWinInet类层次则是对前者的面向对象的封装。
WinInet支持FTP协议、HTTP协议、Gopher协议。使用WinInet可以轻松的与这三种Internet服务器连接和交换信息,而无需考虑底层的数据传输工作。
第6章WinInet编程
微软在MFC基础类库中提供了WinInet类,它是对于WinInetAPI函数的封装,是对所有的WinInetAPI函数按其应用类型进行分类和打包后,以面向对象的形式,向用户提供的一个更高层次上的更容易使用的编程接口。
利用MFCWinInet类编写Internet应用程序还具有以下优点:
(1)提供缓冲机制。会自动建立本地磁盘缓冲区。
(2)支持安全机制。支持基本身份认证和安全套接层协议。
(3)支持Web***访问。
(4)缓冲的输入/输出。
(5)轻松简洁。往往只需一个函数即可建立与服务器的连接。
,不同的类是对不同层次的HINTERNET句柄的封装:分为以下几种:
CInternetSession由CObject派生而来,代表应用程序的一次Internet会话,它封装了HINTERNET会话根句柄,并把使用根句柄的API函数,如OpenURL、InternetConnect等,封装为它的成员函数。
利用它的InternetConnect函数可以建立HTTP、FTP或Gopher连接。用它的OpenURL可以远程直接打开服务器上的文件。
包括CInternetConnection类和它的派生类CFtpConnection类、CHttpConnection类、和CGopherConnection类。
这三种协议有很大区别,因此用CInternetConnection类封装了HTTP、FTP和Gopher连接的共同属性,由它派生的三个连接类分别封装了三个协议的特点,分支持HTTP、FTP和Gopher协议。
文件类首先包括CInternetFile类和由它派生的CHttpFile类和CGopherFile类,分别封装了FTP文件句柄、HTTP请求句柄、Gopher文件句柄。这三个文件类是从MFC的CStdioFile类派生,而CStdioFile类又是从Cfile派生的,继承了Cfile类的特性,使应用程序能像操作本地文件一样操作网络文件。
另外,由CFileFind类派生的用于文件查找的CFtpFileFind类和CGopherFileFind类也应归入文件类的层次。这些是WinInetAPI中用于查询文件的数据结构和函数的封装,利用它们的成员函数可以完成对于FTP或Gopher服务器上文件的查询。
CInternetException类代表MFCWinInet类的成员函数在执行时所发生的错误或异常。
用户可以通过调用AfxThroeInternetException()函数来产生一个CInternetException类对象。
在程序中往往用try/chtch结构来处理错误。
MFCWinInet类的关系
面向对象的编程应首先创建所需的类的实例对象,然后调用类的成员函数。应用程序可以从WinInet类派生出自己的类,再把自己的特色代码添加到重载的函数中,来完成特定的任务。
(1)创建CInternetSession类对象,创建并初始化Internet会话。
(2)利用CInternetSession类的QueryOption或SetOption成员函数,可以查询或设置该类内含的Internet请求选项,这一步是可选。
(3)创建连接类对象,建立CInternetSession对象与网络服务器的连接,也就是应用程序与网络服务器的连接。
(4)创建文件检索类对象,对服务器进行检索
(5)如果需要使用异步操作模式,可以重载CInternetSession类的OnStatusCallback函数,并启动应用程序使用状态回调机制。重载相关函数,加入自己的代码。
(6)如果还想更紧密地控制对于服务器文件的访问,可以进一步创建文件类对象实例,完成文件查找或文件读写操作。
(7)创建CInternetException类对象实例,处理错误。
(8)关闭各种类,将资源释放给系统。