【教学课件】第14章开发Internet应用程序

上传人:ha****u 文档编号:245251021 上传时间:2024-10-08 格式:PPT 页数:29 大小:411.97KB
返回 下载 相关 举报
【教学课件】第14章开发Internet应用程序_第1页
第1页 / 共29页
【教学课件】第14章开发Internet应用程序_第2页
第2页 / 共29页
【教学课件】第14章开发Internet应用程序_第3页
第3页 / 共29页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,14,章,开发,Internet,应用程序,Internet应用程序的开发通常包括Internet服务端和客户端的应用程序,Microsoft提供了大量的API函数来支持这两种程序,客户端应用程序主要通过Internet协议(如Gopher,FTP,HTTP等)来从网络服务器上获取数据,提供访问Internet的功能,服务器端应用程序则用来支持HTTP、FTP或Gopher等类型的服务,1,14.1 Internet应用程序开发的几种类型,使用WinInet类开发Internet应用程序:,WinInet类支持HTTP、FTP和Gopher等标准的协议,使用Windows Socket开发Internet应用程序:,Winsock标准定义了一个DLL接口来连接Internet,MFC使用CAsyncSocket和CSocket类对接口进行了封装。,使用消息收发API(MAPI:Message API)开发Internet应用程序:,使用MAPI可以很方便的向其他应用程序发送电子邮件、语音邮件或传真等功能,2,14.2 WinInet,开发简介,用WinInet开发程序的优点,隐藏协议细节,简化编程:,可不必深入了解协议,而使用WinSocket编程,需理解网络通信及协议基本原理,熟悉的编程接口:,WinInet API函数和很多WinAPI函数很相似,这对有编程经验的程序员来说是很方便的。,稳定性好,不要求程序与底层直接联系:,WinInet隐藏了协议的具体细节,使得程序不必直接使用各种协议,支持数据缓存:,WinInet函数为所有的协议提供缓存能力,程序员只需关心数据而不用去管理数据缓存,支持多线程:,由于WinInet函数在内部处理多线程的并发问题,因此WinInet函数支持多线程,在多线程中可以调用各种WinInet函数而不用担心发生问题或死锁,3,14.3 WinInet,类介绍,WinInet类是一个总称,目前的版本中分为四组,CInternetSession类,CInternetConnection(连接类),CFileFind类(Internet文件查找类),CInternetFile类和CGopherLocator类,4,14.3.1 CInternetSession,类,CInternetSession类直接继承自CObject类,该类用来建立与某个Internet服务器的会话。还可以向代理服务器描述连接,如果应用程序所使用的Internet连接必须保持一段时间,则可以在CWinApp类中创建相应的CInternetSession成员,5,QueryOption提供一个可能的错误检测判断,SetOption设置Internet会话的选项,OpenURL设置URL,并对其进行分析,GetFtpConnection打开一个FTP会话并进行连接,GetHttpConnection打开HTTP服务器并进行连接,GetGopherConnection打开Gopher服务器并进行连接,EnableStatusCallback建立异步操作的状态回调,ServiceTypeFromHandle通过Internet句柄返回服务器类型,GetContext获取Internet和应用程序会话句柄,Close关闭Internet连接,CInternetSession类成员函数,6,14.3.2 CInternetConnection,类,包括CInternetConnection类及其派生类CHttpConnection、CFtpConnection和CGopherConnection类,,这些类帮助用户管理与Internet服务器的连接,同时还提供一些函数完成和响应服务器的通信,7,CInternetConnection:,用于管理与Internet服务器的连接,CFtpConnection:,用于管理与FTP服务器的连接,可以对服务器上的文件和目录进行直接操作,CGopherConnection:,管理与Gopher服务器的连接,CHttpConnection:,管理与HTTP服务器的连接,连接类及其派生类,8,14.3.3 CInternetFile,类,包括CInternetFile类及其派生类CHttpFile、CGopherFile。这些类实现对远程系统上的文件的存取工作。,文件类还包含CFileFind类及其派生类CFtpFileFind、CGopherFileFind类。CFileFind类直接继承于CObject类,这些类实现对本地和远程系统上的文件的搜索和定位工作。,9,CInternetFile:,允许对使用Internet协议的远程系统中的文件进行操作,CGopherFile:,为在Gopher服务器上进行文件检索和读取操作提供支持,CHttpFile:,提供对HTTP服务器上的文件进行操作的支持,CFindFile:,对文件检索提供支持,CFtpFileFind:,为在FTP服务器上进行的文件检索操作提供支持,CGopherFileFind:,为在Gopher服务器上进行的文件检索操作提供支持,文件类说明,10,14.3.4 CGopherLocator,类,在从,Gopher,服务器中获取信息之前,必须先获得该服务器的定位器,而,CGopherLocator,类的主要功能就是从,Gopher,服务器中得到定位并确定定位器的类型,。,11,14.4,用,WinInet,类开发应用程序,编写支持Internet的应用程序一般步骤:,(1)创建一个CInternetSession对象:,由于Internet会话是通过CInternetConnection类的对象实现的,因此首先要创建一个CInternetSession对象,建立一个Internet会话。,(2)建立与服务器的连接:,客户应用程序要与服务器协同工作,在创建了CInternetSession对象后,就需要建立到服务器的连接。根据不同的协议,可选用GetFtpConnect、GetHttpConnect和GetGopherConnect三种方法中的一种。,12,(3)查询或设置Internet选项:,在连接时,有时还要查询或设置Internet 选项,这个工作可以通过QueryOption或SetOption函数来完成。,(4)向用户反馈当前数据处理的进程信息:,有时客户的应用程序在进行某些操作时,要耗费较长的时间,因此需要向用户反馈当前的状态,这个工作由EnableStatusCallback函数来完成,此时还要重载OnStatusCallBack函数以实现回调函数的功能。,13,(5)创建CInternetFile实例:,调用CInternetSession类的成员函数OpenURL建立与服务器的连接,函数返回一个CInternetFile指针。,(6)文件读写操作:,调用CInternetFile:Read或CInternetFile:Write函数对所得到得服务器文件进行读写操作。,(7)异常处理:,为提高应用程序的可靠性和容错性,必须对可能出现的问题进行处理,这种处理通常是通过调用CInternetException类的对象对目前可知的异常进行处理。,(8)结束:,调用CInternetSession:Close结束会话并销毁CInternetSession对象。,14,14.5 WinInet,类编程实例,【例14-1】利用WinInet类编写Internet应用程序。在URL编辑框中写入地址,单击“Http”、“Ftp”或“Gopher”等按钮可在编辑框中显示查询到的相应服务器的信息,编辑框1IDC_EDIT_URL,编辑框2IDC_EDIT_RESULT,下压式按钮IDC_BUTTON_HTTP,下压式按钮IDC_ BUTTON _FTP,下压式按钮IDC_ BUTTON _GOPHER,下压式按钮IDCANCEL,静态文本IDC_STATIC,组框IDC_STATIC,15,给界面对象连接接变量,16,(a),给应用程序增加一个自定义的类,单击Insert,New Class菜单,添加新类类名为CMyWinInetClass,系统会自动在项目中增加MyWinInetClass.cpp和MyWinInetClass.h两个文件,17,(b),在新加入的类中增加如下三个public的成员函数,在头文件MyWinInetClass.h中可看到这些函数。,CString ConnectFtp(const CString sUrl);,/完成连接Ftp功能的函数,CString ConnectHttp(const CString sUrl);,/完成连接Http功能的函数,CString ConnectGopher(const CString sUrl);,/完成连接Gopher功能的函数,18,为了建立Internet的会话,新增加的CMyWinInetClass类中加入一个private型成员变量m_session:,CInternetSession m_session;/建立Internet会话,由于在上面定义了一个CWinInet类的对象,所以还需要在MyWinInetClass.h头文件中加入如下代码:,#include afxinet.h,#include wininet.h,19,为CMyWinInetClass类添加三个用于连接的成员函数,它们分别是,ConnectFtp,、,ConnectHttp,和,ConnectGopher,。,CString CMyWinInetClass:,ConnectFtp,(const CString sUrl),CString sResult;/存储连接信息的字符串,CFtpConnection*Ftpconnection=NULL;,sResult=;,sResult=sResult+Trying to connect Ftp sites+sUrl+rn;,Ftpconnection=m_session.GetFtpConnection(sUrl);,/建立到Ftp服务器的连接,20,if(Ftpconnection),sResult=sResult+Connection established.rn;,CString sCurDir;,Ftpconnection-GetCurrentDirectory(sCurDir);,/得到Ftp服务器的当前目录,sResult=sResult+current directory is+sCurDir+rn;,Ftpconnection-Close();/关闭连接,else,sResult=sResult+There are some errors in finding this Ftp sites;,return sResult;,21,CString CMyWinInetClass:,ConnectHttp,(const CString sUrl),CString sResult;,CInternetFile*hHttpFile=NULL;,sResult=;,sResult=sResult+Trying to connect Http sites+sUrl+rn;,hHttpFile=(CInternetFile*)m_session.OpenURL(sUrl);,/得到文件指针,if(hHttpFile),sResult=sResult+Connection established.rn;,CString sLine;,while(hHttpFile-ReadString(sLine)/读取Http服务器上的内容,sResult=sResult+sLine+rn;,hHttpFile-Close();/关闭连接,else,sResul
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!