网络编程技术(西电课件)第6章.ppt
《网络编程技术(西电课件)第6章.ppt》由会员分享,可在线阅读,更多相关《网络编程技术(西电课件)第6章.ppt(65页珍藏版)》请在三一办公上搜索。
1、1,第6章 开发Internet应用程序,Internet应用程序的开发通常包括Internet服务端和客户端的应用程序,Microsoft提供了大量的API函数来支持这两种程序,客户端应用程序主要通过Internet协议(如Gopher,FTP,HTTP等)来从网络服务器上获取数据,提供访问Internet的功能,服务器端应用程序则用来支持HTTP、FTP或Gopher等类型的服务,你了解FTP协议吗?,2,你了解FTP协议吗?,3,FTP客户端=TCP客户端+固定文字响应规范,FTP协议,4,这是第五章利用CAsyncSocket类实现的TCP客户端,按照FTP协议要求,给FTP服务器发送
2、用户名,10,6.1 Internet应用程序开发的几种类型,使用WinInet类开发Internet应用程序:WinInet类支持HTTP、FTP和Gopher等标准的协议,使用Windows Socket开发Internet应用程序:Winsock标准定义了一个DLL接口来连接Internet,MFC使用CAsyncSocket和CSocket类对接口进行了封装。,使用消息收发API(MAPI:Message API)开发Internet应用程序:使用MAPI可以很方便的向其他应用程序发送电子邮件、语音邮件或传真等功能,11,6.2 WinInet开发简介,用WinInet开发程序的优点,
3、隐藏协议细节,简化编程:可不必深入了解协议,而使用WinSocket编程,需理解网络通信及协议基本原理,熟悉的编程接口:WinInet API函数和很多WinAPI函数很相似,这对有编程经验的程序员来说是很方便的。,稳定性好,不要求程序与底层直接联系:WinInet隐藏了协议的具体细节,使得程序不必直接使用各种协议,支持数据缓存:WinInet函数为所有的协议提供缓存能力,程序员只需关心数据而不用去管理数据缓存,支持多线程:由于WinInet函数在内部处理多线程的并发问题,因此WinInet函数支持多线程,在多线程中可以调用各种WinInet函数而不用担心发生问题或死锁,12,6.3 WinI
4、net类介绍,WinInet类是一个总称,目前的版本中分为四组CInternetSession类CInternetConnection(连接类)CFileFind类(Internet文件查找类)CInternetFile类和CGopherLocator类,13,6.3.1 CInternetSession类,CInternetSession类直接继承自CObject类,该类用来建立与某个Internet服务器的会话。还可以向代理服务器描述连接,如果应用程序所使用的Internet连接必须保持一段时间,则可以在CWinApp类中创建相应的CInternetSession成员,14,QueryOp
5、tion提供一个可能的错误检测判断SetOption设置Internet会话的选项OpenURL设置URL,并对其进行分析GetFtpConnection打开一个FTP会话并进行连接GetHttpConnection打开HTTP服务器并进行连接GetGopherConnection打开Gopher服务器并进行连接EnableStatusCallback建立异步操作的状态回调ServiceTypeFromHandle通过Internet句柄返回服务器类型GetContext获取Internet和应用程序会话句柄Close关闭Internet连接,CInternetSession类成员函数,15,
6、6.3.2 CInternetConnection类,包括CInternetConnection类及其派生类CHttpConnection、CFtpConnection和CGopherConnection类,这些类帮助用户管理与Internet服务器的连接,同时还提供一些函数完成和响应服务器的通信,16,CInternetConnection:用于管理与Internet服务器的连接CFtpConnection:用于管理与FTP服务器的连接,可以对服务器上的文件和目录进行直接操作CGopherConnection:管理与Gopher服务器的连接CHttpConnection:管理与HTTP服务器
7、的连接,连接类及其派生类,17,6.3.3 CInternetFile类,包括CInternetFile类及其派生类CHttpFile、CGopherFile。这些类实现对远程系统上的文件的存取工作。文件类还包含CFileFind类及其派生类CFtpFileFind、CGopherFileFind类。CFileFind类直接继承于CObject类,这些类实现对本地和远程系统上的文件的搜索和定位工作。,18,CInternetFile:允许对使用Internet协议的远程系统中的文件进行操作CGopherFile:为在Gopher服务器上进行文件检索和读取操作提供支持CHttpFile:提供对H
8、TTP服务器上的文件进行操作的支持CFindFile:文文件检索提供支持CFtpFileFind:为在FTP服务器上进行的文件检索操作提供支持CGopherFileFind:为在Gopher服务器上进行的文件检索操作提供支持,文件类说明,19,6.3.4 CGopherLocator类,在从Gopher服务器中获取信息之前,必须先获得该服务器的定位器,而CGopherLocator类的主要功能就是从Gopher服务器中得到定位并确定定位器的类型。,20,6.4 用WinInet类开发应用程序,编写支持Internet的应用程序一般步骤:(1)创建一个CInternetSession对象:由于I
9、nternet会话是通过CInternetConection类的对象实现的,因此首先要创建一个CInternetSession对象,建立一个Internet会话。(2)查询或设置Internet选项:在连接时,有时还要查询或设置Internet 选项,这个工作可以通过QueryOption或SetOption函数来完成。这个步骤是可选的。,21,(3)建立与服务器的连接:客户应用程序要与服务器协同工作,在创建了CInternetSession对象后,就需要建立到服务器的连接。根据不同的协议,可选用GetFtpConnect、GetHttpConnect和GetGopherConnect三种方法
10、中的一种。(4)向用户反馈当前数据处理的进程信息:有时客户的应用程序在进行某些操作时,要耗费较长的时间,因此需要向用户反馈当前的状态,这个工作由EnableStatusCallback函数来完成,此时还要重载OnStatusCallBack函数以实现回调函数的功能。,22,(5)创建文件检索类对象,对服务器进行检索:例如对于FTP协议可以调用CFTPFileFind类来对FTP服务器上的文件进行查询,然后全部列出来(6)创建CInternetFile实例:调用CInternetSession类的成员函数OpenURL建立与服务器的连接,函数返回一个CInternetFile指针。(7)文件读写
11、操作:调用CInternetFile:Read或CInternetFile:Write函数对所得到得服务器文件进行读写操作。,23,(8)异常处理:为提高应用程序的可靠性和容错性,必须对可能出现的问题进行处理,这种处理通常是通过调用CInternetException类的对象对目前可知的异常进行处理。(9)结束:调用CInternetSession:Close结束会话并销毁CInternetSession对象。,创建CInternetSession类对象创建CInternetSession类对象,将创建并初始化Internet会话。像其它类一样,创建CInternetSession类对象需要执
12、行该类的构造函数,它的原型是:CInternetSession(LPCTSTR pstrAgent=NULL,/标识所有者 DWORD dwContext=1,/允许消息回调函数 DWORD dwAccessType=PRE_CONFIG_INTERNET_ACCESS,/注册表默认 LPCTSTR pstrProxyName=NULL,/采用哪个代理 LPCTSTR pstrProxyBypass=NULL,/跳过某些 DWORD dwFlags=0);,CInternetSession示例,25,CInternetSession*pSession;/定义会话对象指针变量pSession=n
13、ew CInternetSession(/创建Internet会话类对象AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS);,查询或设置Internet请求选项创建CInternetSession类对象后,可以调用它的QueryOption成员函数查询Internet请求选项,调用它的SetOption成员函数来设置这些选项。,创建连接类对象通过调用CInternetSession对象的GetFtpConnection、GetHttpConnection、GetGopherConnection成员函数,可以分别建立CInternetSession对象与网
14、络上FTP、HTTP、和GOPHER服务器的连接。并分别创建CFtpConnection、CHttpConnection、CGopherConnection类的对象,来代表这三种连接。,28,CFtpConnection*pConnection;/定义连接对象指针变量/pSession是已建立的CInternetSession类实例/m_strFtp存放了FTP服务器域名/m_strName 存放了用户名/m_strPwd存放了密码pConnection=pSession-GetFtpConnection(m_strFtp,m_strName,m_strPwd);,创建连接类的示例,使用文件检
15、索类CFtpFileFind类和CGopherFileFind类分别封装了对于FTP和Gopher服务器的文件检索操作。它们的基类是CFileFind类。创建了连接对象后,可以进一步创建文件检索类对象,并使用该对象的方法实现对服务器的文件检索。,创建文件检索类的对象实例一般直接调用CFtpFileFind类的构造函数创建该类的对象实例。应当将前面所创建的FTP连接对象指针作为参数。构造函数的原型是:CFtpFileFind(CFtpConnection*pConnection,/连接对象指针DWORD dwContext=1);/表示此操作的环境值例如:CFtpFileFind*pFileFi
16、nd;/pConnection 是已经建立的CInternetSessionpFileFind=new CFtpFileFind(pConnection);,检索第一个符合条件的对象使用CFtpFileFind类的FindFile成员函数可以在FTP服务器上或本地缓冲区中找到第一个符合条件的对象。virtual BOOL FindFile(LPCTSTR pstrName=NULL,/指定要查找/的文件路径,可以使用通配符。例如“*.*”DWORD dwFlags=INTERNET_FLAG_RELOAD);/从哪里检索/默认从网上获取,即使本地缓冲区中有信息,查询符合条件的实例,32,BOO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 编程 技术 课件
链接地址:https://www.31ppt.com/p-5388687.html