华北电力大学 网络编程 4--WinInet编程课件

上传人:我*** 文档编号:142938876 上传时间:2020-08-24 格式:PPT 页数:76 大小:1.87MB
返回 下载 相关 举报
华北电力大学 网络编程 4--WinInet编程课件_第1页
第1页 / 共76页
华北电力大学 网络编程 4--WinInet编程课件_第2页
第2页 / 共76页
华北电力大学 网络编程 4--WinInet编程课件_第3页
第3页 / 共76页
华北电力大学 网络编程 4--WinInet编程课件_第4页
第4页 / 共76页
华北电力大学 网络编程 4--WinInet编程课件_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《华北电力大学 网络编程 4--WinInet编程课件》由会员分享,可在线阅读,更多相关《华北电力大学 网络编程 4--WinInet编程课件(76页珍藏版)》请在金锄头文库上搜索。

1、WinInet编程,WinInet API的一般化问题 基本WinInet函数 FTP客户机WinInet函数 MFC WinInet类 基于WinInet类的FTP客户机编程实例,第4章,4.1 WinInet API的一般化问题,WinInet API功能强大,可以实现Internet客户机访问服务器的全部功能。 HINTERNET句柄 WinInet中错误的处理 WinInet函数中的缓冲区参数 WinInet函数的异步操作模式,4.1.1 HINTERNET句柄,在WinInet函数中,使用个特殊的HINTERNET型句柄,该句柄可以代表Internet会话,也可以代表应用程序与Int

2、ernet上特定服务器的连接,还可以代表各种打开的文件,或者查询的结果等内容。 HINTERNET句柄与其他Win32句柄的重要区别在于,Internet句柄被安排在一个树型体系结构中。 InternetOpen( )、InternetConnect( )、FtpOpenFile( )、FtpFindFirstFile( ),4.1.2 WinInet中错误的处理,一般来说,WinInet API函数的返回值主要有两种类型: 一种函数的返回值类型是HINTERNET句柄型。 另一种函数的返回值类型是布尔型。 应用程序可以根据函数执行后的返回值来判断函数的执行是否成功。 在函数调用失败时可以调用

3、GetLastError( )函数得到具体的错误信息。,4.1.3 WinInet函数中的缓冲区参数,参数lpszBuffer 指向数据缓冲区的指针(LPVOID lpszBuffer),可以为NULL。 参数lpdwBufferLength 指向缓冲区长度的指针(LPDWORD lpdwBufferLength),它在函数开始执行时指示缓冲区的大小,不能为NULL。,4.1.4 WinInet函数的异步操作模式,WinInet函数的默认I/O操作是同步操作。 对于那些完成时间不确定的操作,可以采用异步操作。 WinInet以异步方式操作,应用程序需要做以下工作: (1) 调用Internet

4、Open( )函数在创建Internet会话句柄时,设置参数dwFlags为INTERNET_FLAG_ASYNC。 (2) 在调用创建句柄的函数时,对dwContext参数必须指定一个非零的环境值。 (3) 为句柄实现并注册一个回调函数,以得到一些有关操作进展的状态信息。,WinInet编程,WinInet API的一般化问题 基本WinInet函数 FTP客户机WinInet函数 MFC WinInet类 基于WinInet类的FTP客户机编程实例,第4章,4.2 基本WinInet函数,打开一个WinInet会话 与服务器建立连接 回调函数 通用文件操作 从Internet文件读数据 向

5、Internet文件写数据 移动Intenet文件指针 数据可用性查询 其它基本函数,4.2.1 打开一个WinInet会话,InternetOpen( )函数 打开一个新的会话,然后在调用其他函数时以该函数返回的句柄为输入参数。 当会话操作完成以后,应该使用InternetCloseHandle( )函数关闭该会话句柄。,HINTERNET InternetOpen( LPCTSTRlpszAgent, DWORDdwAccessType, LPCTSTRlpszProxyName, LPCTSTRlpszProxyBypass, DWORDdwFlags );,4.2.1 打开一个WinI

6、net会话,HINTERNET InternetOpen( LPCTSTRlpszAgent, DWORDdwAccessType, LPCTSTRlpszProxyName, LPCTSTRlpszProxyBypass, DWORDdwFlags );,调用此函数的应用程序的名称。,参数dwAccessType IN:表示存取类型,它可设置为: INTERNET_OPEN_TYPE_DIRECT INTERNET_OPEN_TYPE_PRECONFIG INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY INTERNET_OPEN_TYPE_PRO

7、XY,参数lpszProxyBypass IN 定义一个字符串,可以表示在本地机上解析的地址列表,表示代理服务器的名称。,4.2.1 打开一个WinInet会话,HINTERNET InternetOpen( LPCTSTRlpszAgent, DWORDdwAccessType, LPCTSTRlpszProxyName, LPCTSTRlpszProxyBypass, DWORDdwFlags );,参数dwFlags IN:是一个无符号的长整型量,该标志的不同取值组合影响函数的操作行为。可取以下值: INTERNET_FLAG_ASYNC INTERNET_FLAG_FROM_CACHE

8、 INTERNET_FLAG_OFFLINE,4.2.2 与服务器建立连接,InternetConnect( ) 函数,HINTERNET InternetConnect( HINTERNET hInternet, LPCTSTR lpszServerName, INTERNET_PORT nServerPort, LPCTSTR lpszUserName, LPCTSTR lpszPassword, DWORD dwService, DWORD dwFlags, DWORD_PTR dwContext );,先前InternetOpen( )函数调用返回的一个有效的会话句柄。,要连接的服务器

9、的名称。,InternetConnect( ) 函数,HINTERNET InternetConnect( HINTERNET hInternet, LPCTSTR lpszServerName, INTERNET_PORT nServerPort, LPCTSTR lpszUserName, LPCTSTR lpszPassword, DWORD dwService, DWORD dwFlags, DWORD_PTR dwContext );,4.2.2 与服务器建立连接,参数nServerPort IN:表示要连接的服务器的端口号。 该参数若取值为INTERNET_INVALID_PORT

10、_NUMBER,则使用由dwService参数所确定的默认端口。 该参数也可以取以下常数: INTERNET_DEFAULT_FTP_PORT:默认端口2l INTERNET_DEFAULT_GOPHER_PORT:默认端口70 INTERNET_DEFAULT_HTTP_PORT:默认端口80 INTERNET_DEFAULT_HTTPS_PORT:默认端口443 INTERNET_DEFAULT_SOCKS_PORT:默认端口1080,InternetConnect( ) 函数,HINTERNET InternetConnect( HINTERNET hInternet, LPCTSTR

11、lpszServerName, INTERNET_PORT nServerPort, LPCTSTR lpszUserName, LPCTSTR lpszPassword, DWORD dwService, DWORD dwFlags, DWORD_PTR dwContext );,4.2.2 与服务器建立连接,参数lpszUserName IN:表示登录时的用户名。 参数lpszPassword IN:表示登录时的用户口令。,InternetConnect( ) 函数 该函数调用成功后返回一个相对于FTP、HTTP或Gopher会话的HINTERNET型连接句柄。 对于FTP协议,调用Int

12、ernetConnect( )函数时将与服务器建立一条真正的连接。 对于HTTP和Gopher协议来说,直到向指定的服务器请求处理事务时才建立连接。,4.2.2 与服务器建立连接,4.2.3 回调函数,回调函数原型 应用程序使用回调函数来指示一个异步操作的完成,或指示异步函数执行的进展情况。,void CALLBACK InternetStatusCallback( HINTERNEThInternet, DWORD_PTR dwContext, DWORD dwInternetStatus, LPVOID lpvStatusInformation, DWORD dwStatusInforma

13、tionLength );,InternetSetStatusCallback( )函数原型 通过调用InternetSetStatusCallback( )函数可以建立一个回调函数与一个句柄的关联,称为注册。一旦建立了这种关联,所有对于这个句柄的异步操作都将调用这个回调函数,产生状态指示,来汇报函数的操作情况。,INTERNET_STATUS_CALLBACK InternetSetStatusCallback( HINTERNEThInternet, INTERNET_STATUS_CALLBACKlpfnInternetCallback );,如果调用成功,则返回先前定义的状态回调函数;

14、如果先前没有定义状态回调函数则返回NULL;如果返回INTERNET_INVALID_STATUS_CALLBACK,表示该回调函数是无效的。 使用InternetSetStatusCallback( )函数也可以改变一个句柄关联的回调函数。 一个回调函数可以被注册到任何句柄,并且被其派生的句柄所继承。,举例-说明如何定义并且注册一个回调函数,4.2.3 回调函数,/ 定义一个回调函数,函数名是用户自己定义的 void CALLBACK CInternet:InternetCallback( HINTERNEThInternet, DWORD_PTR dwcontext, DWORD dwIn

15、ternetStatus, LPVOID lpvStatusInformation, DWORD dwStatusInformationLength) / 在这里插入回调函数的实现代码 ; / 定义一个INTERNET_STATUS_CALLBACK型的变量 INTERNET_STATUS_CALLBACK dwISC; / 建立句柄与回调函数之间的关联 dwISC = InternetSetStatusCallback(hInternet, (INTERNET_STATUS_CALLBACK) InternetCallback);,4.2.4 通用文件操作,InternetOpenUrl(

16、)函数 可以通过一个完整的FTP、HTTP或Gopher网址直接打开一个资源,没有必要在该函数前再调用InternetConnect( )函数。 InternetOpenUrl( )函数的原型如下:,HINTERNET InternetOpenUrl( HINTERNEThInternet, LPCTSTRlpszUrl, LPCTSTRlpszHeaders, DWORDdwHeadersLength, DWORDdwFlags, DWORD_PTRdwContext );,4.2.5 从Internet文件读数据,InternetReadFile( )函数 从一个打开的Internet文件中读数据。 该函数的原型如下:,BOOL InternetReadFile( HINTERNET hFile, LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, LPDWORD lpdwNumberOfBytesRead );,4.2.6 向Intern

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号