网络编程实用教程第4章.ppt

上传人:豆**** 文档编号:60623334 上传时间:2022-11-17 格式:PPT 页数:43 大小:849.50KB
返回 下载 相关 举报
网络编程实用教程第4章.ppt_第1页
第1页 / 共43页
网络编程实用教程第4章.ppt_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《网络编程实用教程第4章.ppt》由会员分享,可在线阅读,更多相关《网络编程实用教程第4章.ppt(43页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、吉林大学软件学院吉林大学软件学院网络编程实用教程第4章 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望吉林大学软件学院吉林大学软件学院4.1使用使用WinInetAPI的共性问题的共性问题l使用WinInetAPI,应用程序可以与Internet服务器建立连接、查询或接收服务器文件、向服务器发送文件、打开服务器上的文件,等等。l进行操作时可以使用同步方式或异步方式。lWinInetAPI的函数原型定义在的函数原型定义在Wininet.h头文件头文件中,对应的函数实

2、现在中,对应的函数实现在Wininet.lib库文件中。库文件中。l要想成功地编译使用要想成功地编译使用WinInetAPI的应用程序的应用程序,正正在使用的在使用的C/C+的的include目录中必须有目录中必须有Wininet.h头文件,头文件,library目录中必须有目录中必须有Wininet.lib库文件。库文件。吉林大学软件学院吉林大学软件学院4.1.1WinInetAPI函数使用的函数使用的HINTERNET句柄句柄lHINTERNET句柄是一种特殊的数据类型,由少数句柄是一种特殊的数据类型,由少数WinInetAPI函数创建,大多数函数创建,大多数WinInetAPI函数通过函

3、数通过使用使用HINTERNET类型的句柄来实现函数的操作。类型的句柄来实现函数的操作。lHINTERNET句柄可以代表句柄可以代表Internet会话,也可以代会话,也可以代表应用程序与表应用程序与Internet上特定服务器的连接,还可以上特定服务器的连接,还可以代表各种打开的文件或查询结果。代表各种打开的文件或查询结果。lHINTERNET句柄与普通的句柄与普通的Win32句柄相似。句柄相似。l区别在于处于不同层次的区别在于处于不同层次的HINTERNET句柄形成了一句柄形成了一个树形体系,且只有少数函数能够创建个树形体系,且只有少数函数能够创建HINTERNET句柄。句柄。吉林大学软件

4、学院吉林大学软件学院图图4.1各种各种HINTERNET句柄形成的句柄形成的树树形体系形体系结结构构吉林大学软件学院吉林大学软件学院l各种各种HINTERNET句柄都有相应的数据结构,记录句句柄都有相应的数据结构,记录句柄的属性信息,并提供通过该句柄可以实现的操作。柄的属性信息,并提供通过该句柄可以实现的操作。l下层句柄是由上层句柄派生出来的,下层句柄继承上下层句柄是由上层句柄派生出来的,下层句柄继承上层句柄的属性。层句柄的属性。l当用户调用当用户调用InternetCloseHandle函数来关闭一个句柄函数来关闭一个句柄时,由该句柄派生的所有下层句柄都将被关闭。时,由该句柄派生的所有下层句

5、柄都将被关闭。lHINTERNET句柄有许多选项,这些选项决定了句柄句柄有许多选项,这些选项决定了句柄的行为和属性,如句柄的操作方式、超时设置、异步的行为和属性,如句柄的操作方式、超时设置、异步操作时的回调函数、环境上下文操作时的回调函数、环境上下文ID、缓冲区大小等。、缓冲区大小等。l句柄的类型不同,选项也不同。应用程序可以调用句柄的类型不同,选项也不同。应用程序可以调用InternetQueryOption函数来查询句柄的选项设置,调函数来查询句柄的选项设置,调用用InternetSetOption函数来改变句柄的选项设置。函数来改变句柄的选项设置。吉林大学软件学院吉林大学软件学院图图4.

6、2依依赖赖由由InternetOpenUrl所所创创建句柄的三个函数建句柄的三个函数4.1.2典型的操作流程和它们使用的句柄典型的操作流程和它们使用的句柄1.使用使用InternetOpenUrl直接打开因特网上指定的文件直接打开因特网上指定的文件2FTP操作的操作的层级结层级结构构(1)(1)对对对对FTPFTP服服服服务务务务器的目器的目器的目器的目录录录录和文件和文件和文件和文件进进进进行操作行操作行操作行操作图图4.3对对FTP服服务务器的目器的目录录和文件和文件进进行操作行操作的流程的流程(2)(2)使用内存使用内存使用内存使用内存缓缓缓缓冲区来操作冲区来操作冲区来操作冲区来操作FT

7、PFTP服服服服务务务务器上的文件器上的文件器上的文件器上的文件.图图4.4使用内存使用内存缓缓冲区来操作冲区来操作FTP服服务务器上的文件器上的文件(3)(3)查询查询查询查询FTPFTP服服服服务务务务器上的文件器上的文件器上的文件器上的文件图图4.5查询查询FTP服服务务器上的文件器上的文件4.1.3如何获取如何获取WinInetAPI函数执行的错误信息函数执行的错误信息l从从函函数数的的返返回回值值来来说说,WinInetAPI主主要要有有两两种种类类型。型。l一种函数的返回值类型是HINTERNET句柄型;l一种函数的返回值类型是布尔型。l应应用用程程序序可可以以根根据据函函数数执执

8、行行后后的的返返回回值值来来判判断断函函数数的的执执行是否成功。行是否成功。l对于前一种函数,当函数执行成功时,返回一个有效的句柄;当函数失败时,则返回NULL。l对于后一种函数,当函数执行成功时,返回TRUE;当函数失败时,返回FALSE。l在函数在函数调调用失用失败败后,用后,用户户往往需要了解出往往需要了解出错错的具体的具体原因,原因,应应用程序可以随即用程序可以随即调调用用GetLastError函数函数来来获获取更具体的取更具体的错误错误信息。信息。吉林大学软件学院吉林大学软件学院4.1.4关于返回信息的缓冲区参数关于返回信息的缓冲区参数l许多许多WinInetAPI函数使用两个参数

9、来向应用程序函数使用两个参数来向应用程序返回信息。返回信息。llpszBuffer是指向数据缓冲区的指针(LPVOIDlpszBuffer),可以为NULL。llpdwBufferLength是指向缓冲区长度的指针(LPDWORDlpdwBufferLength),它在函数开始执行时指示缓冲区的大小,不能为NULL。吉林大学软件学院吉林大学软件学院l函数执行完毕时,作为函数的出口参数,返回一个长函数执行完毕时,作为函数的出口参数,返回一个长度可变的信息。度可变的信息。l若调用成功若调用成功llpszBuffer指向的缓冲区中存储着返回的信息内容。llpdwBufferLength所指的双字就被

10、设置为实际存入缓冲区的数据的字节长度。l若若lpszBuffer指针为指针为NULL,或,或lpdwBufferLength指示指示的缓冲区大小不足以容纳返回的数据,函数调用将失的缓冲区大小不足以容纳返回的数据,函数调用将失败,并在函数返回时将败,并在函数返回时将lpdwBufferLength所指的值设所指的值设置为接受返回数据所需的缓冲区字节数。置为接受返回数据所需的缓冲区字节数。l用户可以使用这个返回值,重新分配一个更大的缓冲区,并重新调用函数。4.1.5WinInetAPI的异步操作模式的异步操作模式lWinInetAPI的的函函数数在在进进行行I/O操操作作时时,默默认认的的方方式式

11、是是同同步步操操作作,即即对对于于每每一一个个不不能能及及时时完完成成的的I/O操操作作,会会一直等下去,直到操作完成。一直等下去,直到操作完成。l异异步步操操作作,无无论论成成功功与与否否函函数数调调用用都都会会立立即即返返回回,这这样样就就允允许许一一个个单单线线程程的的应应用用程程序序最最充充分分地地利利用用CPU,而不必等待网络而不必等待网络I/O的完成。的完成。l当调用异步操作模式的函数时,应检查返回值。当调用异步操作模式的函数时,应检查返回值。l若 函 数 调 用 返 回 FALSE或 NULL,并 且 调 用GetLastError返回一个ERROR_IO_PENDING错误,说

12、明该函数调用已经异步的完成了。l并 且 当 函 数 执 行 完 毕 时,会 使 用INTERNET_STATUS_REQUEST_COMPLETE状 态码来自动的调用应用程序的回调函数。吉林大学软件学院吉林大学软件学院l为为了了使使WinInet以以异异步步方方式式操操作作,应应用用程程序序需需要要做做四件事。四件事。设置异步方式标志l在调用InternetOpen函数来创建Inernet根句柄时,将参数dwFlags设置为INTERNET_FLAG_ASYNC异步标志。l这表示接下来针对根句柄及其派生句柄的操作都以异步方式进行。l任何调用在异步结束后均返回一个对话句柄或由此而派生的句柄。吉林

13、大学软件学院吉林大学软件学院设置非零的环境值lWinInet中创建句柄的函数都有一个称为环境值的入口参数,名字总是dwContext。l如果要求针对某个句柄的函数以异步的方式来操作,在调用创建该句柄的函数时,对dwContext参数必须指定一个非零的环境值。l如果把环境值指定为0,即使在上一步操作中设置了INTERNET_FLAG_ASYNC标志,依赖该句柄的函数也只能以同步方式来操作。定义并实现一个状态回调函数(statuscallbackfunction)l对于长时间操作的WinInet函数,回调函数可以给应用程序返回一些关于操作进展情况的反馈,并主要是与网络操作有关的情况。leg:解析了

14、一个域名、正在连接服务器、正在接收数据l异步操作完成时将调用回调函数,给出某种指示.lINTERNET_STATUS_HANDLE_CLOSING是是对对于于一一个个句句柄最后做的状态指示;柄最后做的状态指示;lINTERNET_STATUS_HANDLE_CREATED是是当当句句柄柄初初始创建时的指示;始创建时的指示;lINTERNET_STATUS_REQUEST_COMPLETE是是当当一一个个异步操作完成时的指示。异步操作完成时的指示。l当当接接收收到到一一个个INTERNET_STATUS_REQUEST_COMPLETE指指示示时时,应应用用程程序序必必须须检检查查INTERNE

15、T_ASYNC_RESULT结结构,来决定操作是成功还是失败。构,来决定操作是成功还是失败。为句柄注册有效的回调函数l通过调用InternetSetStatusCallback函数可以建立一个回调函数与一个句柄的关联,称为注册。l一旦建立了这种关联,所有对于这个句柄的异步操作就都调用这个回调函数,产生状态指示,汇报函数的操作情况。l回调函数被该句柄派生的句柄继承,对于其派生句柄的异步操作也都将调用这个回调函数。l使用InternetSetStatusCallback函数也可以改变一个句柄关联的回调函数,但是改变了一个句柄关联的回调函数并不改变其派生句柄的关联回调函数.l异步操作在调用回调函数时

16、,会将所操作的句柄创建时指定的非零环境值,以及对这个句柄操作的状态指示等信息,作为入口参数传递给回调函数,利用传入的环境值,可以核查向回调函数产生调用的操作,从而判别出这此回调是哪个异步操作引起的,进而做出不同的处理。吉林大学软件学院吉林大学软件学院4.1.6回调函数的定义实现与注册回调函数的定义实现与注册1回调函数的原型回调函数的原型VOID(CALLBACK*INTERNET_STATUS_CALLBACK)(INHINTERNEThInternet,INDWORDdwContext,INDWORDdwInternetStatus,INLPVOIDlpvStatusInformation,

17、INDWORDdwStatusInformationLength);吉林大学软件学院吉林大学软件学院2INTERNET_ASYNC_RESULT结构的定义结构的定义l此结构包含异步回调函数的结果。typedefstructDWORDdwResult;DWORDdwError;INTERNET_ASYNC_RESULT,*LPINTERNET_ASYNC_RESULT;吉林大学软件学院吉林大学软件学院3注册句柄的回调函数注册句柄的回调函数l调用InternetSetStatusCallback函数可以建立回调函数与句柄的关联。INTERNET_STATUS_CALLBACKInternetSet

18、StatusCallback(INHINTERNEThInternet,ININTERNET_STATUS_CALLBACKlpfnInternetCallback);4举例举例l l下下面面给给出出了了一一个个回回调调函函数数的的例例子子,和和一一个个调调用用InternetSetStatusCallbackInternetSetStatusCallback来注册回调函数的例子来注册回调函数的例子./定定义义了一个回了一个回调调函数,函数名是用函数,函数名是用户户自己定自己定义义的。的。voidCALLBACKCInternet:InternetCallback(HINTERNEThInte

19、rnet,/其它参数原其它参数原样样照抄照抄DWORDdwcontext,DWORDdwInternetStatus,LPVOIDlpvStatusInformation,DWORDdwStatusInformationLength)/在在这这里插入回里插入回调调函数的函数的实现实现代代码码。.;/定定义义INTERNET_STATUS_CALLBACK型的型的变变量量INTERNET_STATUS_CALLBACKdwISC;/建立句柄与回建立句柄与回调调函数的关函数的关联联dwISC=InternetSetStatusCallback(hInternet,(INTERNET_STATUS_

20、CALLBACK)InternetCallback);吉林大学软件学院吉林大学软件学院4.2使用使用WinInetAPI编制编制FTP客户程序客户程序的要点的要点4.2.1一般步骤一般步骤lFTP客客户户端端应应用程序的一般步用程序的一般步骤骤是:是:1.调 用 InternetAttemptConnect函 数 测 试 主 机 与Internet的连接状态;2.调用InternetOpen函数,创建HINTERNET会话根句柄;3.创建FTP会话句柄,调用函数时需要服务器名、FTP端 口 号、用 户 名 和 口 令,设 置INTERNET_SERVICE_FTP标志,若将端口号设置为HINT

21、ERNT_INVALID_PORT_NUMBER,则使用默认端口号;4.对于FTP服务器执行需要的操作:4.对对于于FTP服服务务器器执执行需要的操作:行需要的操作:搜寻并列举FTP服务器上的文件和目录l使用FtpFindFirstFile和InternetFindNextFile函数。查知或改变FTP服务器的当前目录l使用FtpGetCurrentDirectory和FtpSetCurrentDirectory函数。操作服务器上的目录l使用FtpCreateDirectory和FtpRemoveDirectory函数.下载FTP服务器中的文件l使用FtpOpenFile和InternetRe

22、adFile函数下载和上传文件l使用FtpGetFile和FtpPutFile函数。吉林大学软件学院吉林大学软件学院4.2.2搜寻并列举搜寻并列举FTP服务器上的文件和目录服务器上的文件和目录l使使用用FTP的的主主要要目目的的是是操操作作文文件件,经经常常要要在在FTP服服务务器上器上查查找符合一定条件的目找符合一定条件的目录录或文件,称或文件,称为为目目录录列列举举.l符符合合条条件件的的对对象象可可能能有有很很多多,需需要要使使用用两两个个WinInet函数才能把所有的都搜索出来。函数才能把所有的都搜索出来。l首先,调用FtpFindFirstFile函数,找到服务器上第一个匹配的文件或

23、目录,并返回一个HINTERNET句柄。l在此基础上,可以使用这个句柄,反复调用InternetFindNextFile函数,搜寻到其它的匹配文件或目录,直到返回ERROR_NO_MORE_FILES时,说明所有匹配的对象都找到了。lFtpFindFirstFile函数的原型:函数的原型:HINTERNETFtpFindFirstFile(INHINTERNEThFtpSession,/指定FTP会话句柄INLPCSTRlpszSearchFile,/指定要寻找的目录或文件路径OUTLPWIN32_FIND_DATAlpFindFileData,/返回的搜寻结果INDWORDdwFlags,/

24、设置影响函数执行的标志INDWORDdwContext/环境值);l如如 果果 函函 数数 执执 行行 成成 功功,返返 回回 一一 个个 有有 效效 的的 句句 柄柄,用用 于于InternetFindNextFile,继续查询继续查询,否,否则则返回返回NULL。l如如果果函函数数找找不不到到匹匹配配对对象象,则则调调用用GetLastError函函数数返返回回一个一个ERROR_NO_MORE_FILES错误错误。吉林大学软件学院吉林大学软件学院l在在一一个个FTP会会话话期期内内,只只可可以以调调用用一一次次FtpFindFirstFile函函数数,此此后后应应使使用用Internet

25、FindNextFile函函数数列举出其余符合条件的目录和文件。列举出其余符合条件的目录和文件。l并将结果返回到并将结果返回到WIN32_FIND_DATA结构中。结构中。lInternetFindNextFile函数比较简单,其原型是:函数比较简单,其原型是:BOOLInternetFindNextFile(INHINTERNEThFind,/查找句柄OUTLPVOIDlpvFindData);/查找的结果l函函数数返返回回值值是是BOOL型型,如如果果执执行行成成功功返返回回TRUE,否否则则返回返回NULL。l如如果果函函数数找找不不到到匹匹配配对对象象,则则调调用用GetLastErr

26、or函函数数返返回回一个一个ERROR_NO_MORE_FILES错误错误。吉林大学软件学院吉林大学软件学院4.2.3查知或改变查知或改变FTP服务器的当前目录服务器的当前目录l应应用用程程序序对对于于FTP服服务务器器上上的的当当前前目目录录的的控控制制称称为为目目录导录导航。航。l调用FtpGetCurrentDiretory函数能够查知FTP服务器上的当前目录是哪一个;l调用FtpSetCurrentDiretory函数能够将FTP服务器上的当前目录改变到指定目录。lFtpGetCurrentDiretory函数的原型:函数的原型:BOOLFtpGetCurrentDirectory(I

27、NHINTERNEThFtpSession,/FTP会话句柄OUTLPSTRlpszCurrentDirectory,/返回当前目录的缓冲区指针INOUTLPDWORDlpdwCurrentDirectory/缓冲区的字符长度。);lFtpSetCurrentDirectory函数的原型:函数的原型:BOOLFtpSetCurrentDirectory(INHINTERNEThFtpSession,/有效的FTP会话句柄INLPCSTRlpszDirectory/要设置的新当前目录路径);l返回返回值值是是BOOL型的,成功返回型的,成功返回TRUE,失,失败败返回返回FALSE.吉林大学软件

28、学院吉林大学软件学院4.2.4操作服务器上的目录操作服务器上的目录l使使用用WinInetAPI函函数数可可以以在在FTP服服务务器器上上创创建建和和删删除除目录,当然应用程序应当具有相应的权限。目录,当然应用程序应当具有相应的权限。l在在调调用用InternetConnect时时,指指定定具具有有相相应应权权限限的的用用户户名和口令,正确地登录到名和口令,正确地登录到FTP服务器。服务器。l调调用用FtpCreateDirectory可可以以在在FTP服服务务器器上上创创建建新新的的目录,函数原型是:目录,函数原型是:BOOLFtpCreateDirectory(INHINTERNEThFt

29、pSession,/有效的FTP会话句柄INLPCSTRlpszDirectory/字符串指针,用于指定要创建的目录路径(名));吉林大学软件学院吉林大学软件学院l调调用用FtpRemoveDirectory可可以以删删除除FTP服服务务器器上上的的指指定的目录,函数原型是:定的目录,函数原型是:BOOLFtpRemoveDirectory(INHINTERNEThFtpSession,/有效的FTP会话句柄INLPCSTRlpszDirectory/字符串指针,用于指定要删除的目录路径(名));l以上两函数的返回值是以上两函数的返回值是BOOL型,调用成功,返回型,调用成功,返回TRUE,否

30、则返回,否则返回FALSE。l应用程序可以使用应用程序可以使用FtpGetCurrentDirectory函数来决函数来决定远方定远方FTP站点的当前工作目录。站点的当前工作目录。吉林大学软件学院吉林大学软件学院lFtpCreateDirectory函数的原型是函数的原型是BOOLFtpCreateDirectory(INHINTERNEThFtpSession,/有效的FTP会话句柄.INLPCSTRlpszDirectory/要创建的目录路径.);lFtpRemoveDirectory函数的原型是函数的原型是BOOLFtpRemoveDirectory(INHINTERNEThFtpSes

31、sion,/有效的FTP会话句柄.INLPCSTRlpszDirectory/要删除的目录路径.);31吉林大学软件学院吉林大学软件学院4.2.5下载下载FTP服务器中的文件服务器中的文件lWinInet为为客客户户端端应应用用程程序序提提供供了了三三种种从从FTP服服务务器器上上获取文件的方法。获取文件的方法。(1)使用使用InternetOpenURL和和InternetReadFile函数函数l如果用户确切的知道文件有效的URL,并且应用程序想要更紧密的控制下载的过程,同时在FTP服务器上不需要进行其它的操作,可以使用这种方法。l应用程序直接调用InternetOpenURL函数打开由R

32、UL指定 的 服 务 器 文 件,创 建 文 件 句 柄,再 调 用InternetReadFile函数下载文件的内容,这种方法允许应用程序对下载有更强的控制,是通用的下载方法。吉林大学软件学院吉林大学软件学院(2)使用使用FtpOpenFile和和InternetReadFile函数函数l如果应用程序已经调用InternetConnect函数创建了一个到服务器的FTP会话句柄,可以首先调用FtpOpenFile函 数 打 开 服 务 器 上 的 现 存 文 件,再 调 用InternetReadFile来下载文件,并保持与FTP服务器的连接,因此允许执行更多的其他命令。l在如下两种情况应使用

33、这种下载方法:应用程序需要从服务器获得一个文件,并把文件信息首先装入应用程序控制的内存缓冲区,而不是直接写到磁盘的一个文件中;应用程序需要对文件的传送过程进行很好的控制,如下载过程中显示进度指示器。吉林大学软件学院吉林大学软件学院lFtpOpenFile函数原型是:函数原型是:HINTERNETFtpOpenFile(INHINTERNEThFtpSession,/Ftp会话句柄.INLPCSTRlpszFileName,/字符串指针,指向要访问的远程文件名INDWORDfdwAccess,/对文件做的操作,只读或写INDWORDdwFlags,/传送方法与缓存方法.INDWORDdwCont

34、ext,/环境值.);l函函数数返返回回HINTERNET句句柄柄,初初始始化化对对远远地地文文件件的的访访问问,如如果果成成功功返返回回一一个个句句柄柄,供供InternetReadFile或或InternetWriteFile使用,如果失使用,如果失败败返回返回NULL。l在使用在使用FtpOpenFile函数打开了函数打开了FTP服务器上的一个文服务器上的一个文件,并成功地返回了一个文件句柄之后,应用程序必件,并成功地返回了一个文件句柄之后,应用程序必须使用须使用InternetReadFile函数下载文件的内容。函数下载文件的内容。lInternetReadFile函数的原型是:函数的

35、原型是:BOOLInternetReadFile(INHINTERNEThFile,/FtpOpenFile返回的文件句柄.INLPCVOIDlpBuffer,/接收数据的内存缓冲区指针.INDWORDdwNumberOfByetesToWrite,/要读的字节数.OUTLPDWORDlpdwNumberOfByetesWriten,/实际读到的字节数.);l函数成功函数成功执执行返回行返回TRUE,否,否则则返回返回FALSE。l如如果果返返回回值值是是TRUE,并并且且读读到到的的字字节节数数是是0,说说明明传传送已送已经经完成,可完成,可调调用用InternetCloseHandle释释

36、放放连连接。接。吉林大学软件学院吉林大学软件学院llpBuffer缓冲区应足够大,下载一个服务器文件往往要缓冲区应足够大,下载一个服务器文件往往要多次调用多次调用InternetReadFile函数,直到把数据都读完函数,直到把数据都读完。l每次每次调调用用时时,函数会尽量多,函数会尽量多读读数据,如果网数据,如果网络络上的数上的数据尚未到达,函数会等待,直到据尚未到达,函数会等待,直到读够读够数据。数据。l在一个在一个FTP会会话话中,中,仅仅仅仅可以打开一个文件,只能同可以打开一个文件,只能同时时存在一个文件句柄。存在一个文件句柄。l如果在未如果在未调调用用InternetCloseHan

37、dle关关闭闭前面的文件句柄前面的文件句柄时时,就,就继续调继续调用用FtpOpenFile,会,会产产生生ERROR_FTP_TRANSFER_IN_PROGRESS错误错误。吉林大学软件学院吉林大学软件学院(3)使用使用FtpGetFile函数。函数。l如果应用程序并不需要紧密地控制下载,可以使用FtpGetFile函数,直接指定服务器上的远程文件名和下载后在本地存储的文件名,来获得文件。l函数同样要求已经用InternetConnect建立了到服务器的FTP会话连接。l应用程序可以调用应用程序可以调用FtpGetFile函数将远程文件存为本地函数将远程文件存为本地系统中的文件,此函数将文

38、件从远程系统中的文件,此函数将文件从远程FTP服务器中读出,服务器中读出,并以指定的文件名存在本地系统中。并以指定的文件名存在本地系统中。lFtpGetFile函数的原型是:函数的原型是:BOOLFtpGetFile(INHINTERNEThFtpSession,/Ftp会话句柄.INLPCSTRlpszRemoteFile,/服务器上的远程文件名INLPCSTRlpszNewFile,/存在本地的文件名.INBOOLfFailIfExists,/如何处理同名文件.INDWORDdwLocalFlagsAndAttributes,/新创建的文件的属性.INDWORDdwInternetFlag

39、s,/传送方法与缓存方法.INDWORDdwContext,/环境值.);l函数成功函数成功执执行返回行返回TRUE,否,否则则返回返回FALSE。4.2.6上传文件上传文件l上传文件是指在上传文件是指在FTP服务器上放置一个文件。服务器上放置一个文件。l在在WinInet中有两种方法。中有两种方法。(1)使用使用FtpOpenFile和和InternetWriteFilel如果应用程序要发送一些数据到FTP服务器,并且要把这些数据作为一个文件存在服务器上,而应用程序并没有一个本地文件包含这些数据,数据在内存缓冲区内,可以使用FtpOpenFile以写的方式打开文件,创建文件句柄,然后再调用I

40、nternetWriteFile将数据发送到服务器的文件中。(2)使用使用FtpPutFilel如果本地文件已经存在,应用程序可以紧密地控制文件的传送。(1)使用使用FtpOpenFile和和InternetWriteFilelFtpOpenFile的用法与下载文件基本相同,区别在于必的用法与下载文件基本相同,区别在于必须以写的方式打开。须以写的方式打开。l然后调用然后调用InternetWriteFile将本地内存缓冲区中的数据将本地内存缓冲区中的数据上传到服务器。上传到服务器。l函数原型是:函数原型是:BOOLInternetWriteFile(INHINTERNEThFile,/FtpO

41、penFile返回的文件句柄.INLPCVOIDlpBuffer,/指向本地内存缓冲区的指针,存放要写的数据.INDWORDdwNumberOfByetesToWrite,/要写的字节数.OUTLPDWORDlpdwNumberOfByetesWriten,/实际写的字节数.);(2)使用使用FtpPutFile函数函数l使用使用FtpPutFile函数可以直接将文件上传到函数可以直接将文件上传到FTP服务器服务器l函数原型是:函数原型是:BOOLFtpPutFile(INHINTERNEThFtpSession,/Ftp会话句柄.INLPCSTRlpszLocalFile,/要上传的本地文件

42、名INLPCSTRlpszNewRemoteFile,/要在服务器上创建的新文件名.INDWORDdwFlags,/传送方法与缓存方法.INDWORDdwContext,/环境值.);lFtpPutFile是是一一个个高高级级函函数数,处处理理了了按按照照FTP从从本本地地读读取取一一个个文文件件并并把把它它存存储储在在远远方方服服务务器器上上,形形成成一一个个文文件的全部件的全部细节细节,返回,返回TRUE成功,成功,FALSE失失败败。4.2.7删除删除Ftp服务器中的文件服务器中的文件l使用使用FtpDeleteFile函数可以删除服务器中的文件。函数可以删除服务器中的文件。l应应 用用

43、 程程 序序 应应 当当 具具 有有 相相 应应 的的 权权 限限,在在 调调 用用InternetConnect时时,指指定定具具有有相相应应权权限限的的用用户户名名和和口口令,正确的登录服务器。令,正确的登录服务器。l函数的原型是:函数的原型是:BOOLFtpDeleteFile(INHINTERNEThFtpSession,/有效的FTP会话句柄,必须是InternetConnect函数返回的INLPCSTRlpszFileName/要删除的FTP服务器上的文件路径,可以是绝对或相对路径);l函数删除一个存储在函数删除一个存储在FTP服务器上的文件,成功返回服务器上的文件,成功返回TRUE,失败返回,失败返回FALSE。吉林大学软件学院吉林大学软件学院4.2.8重命名重命名FTP服务器上的文件或目录服务器上的文件或目录l使使用用FtpRenameFile函函数数可可以以重重命命名名FTP服服务务器器上上的的文文件和目录,函数的原型是:件和目录,函数的原型是:BOOLFtpRenameFile(INHINTERNEThFtpSession,/有效的FTP会话句柄INLPCSTRlpszExisting,/文件的原名路径INLPCSTRlpszNew/文件的新的文件名);l如果成功则返回如果成功则返回TRUE,否则返回,否则返回FALSE。

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

当前位置:首页 > 教育专区 > 小学资料

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com