如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
工学院实验报告实验项目:FTP--客户机端(网络编程实验)计算机科学与技术专业0801班姓名:于佳涛学号:080102060051指导老师:赵福祥2011年11月实现目标:在因特网上有很多FTP服务器,他们存有丰富的软件和信息资源,至今仍然是因特网提供的主要服务之一。现在也有很多FTP客户端软件,比如CuteFtp程序等,本小节就通过一个使用MFCWinInet类编制的FTP客户端程序的例子,说明MFCWinInet应用程序的编程方法。程序能实现基本的FTP客户端功能,能登陆FTP服务器,显示登录客户目录下的文件和目录名,能从该目录中选择下载服务器的文件,也能向服务器上传文件。应用程序的类型是基于对话框的,主对话框用户界面如图6.10所示:图1Ftp客户端程序的主对话框三个文本编辑框,分别用于输入FTP服务器域名,登录用户名和登录口令。一个列表框,用来显示FTP服务器当前目录的内容,并允许用户从中选择文件下载。四个命令按钮分别执行查询、上传、下载和退出的功能。用户执行程序的流程是:进行各种操作之前,应首先输入服务器域名,登录用户名和口令。如果要进行查询,可以点击‘查询’按钮,调用OnQuery函数。该函数获得用户当前输入的服务器名、登录用户名和口令等信息,清除列表框的内容;然号创建Internet会话类对象,进行服务器的登录,试图建立与指定FTP服务器的连接;如果连接成功,就创建CFtpFileFind文件检索类对象,查找服务器上当前目录的任意文件,找到了第一个文件后,继续找其它的文件,并将找到的文件或目录名显示在列表框中。所有文件找到后,结束查询,并依次删除文件查询对象、FTP连接对象和Internet会话对象,结束会话。此时,可以从服务器下载文件。从列表框中选择一个文件,会产生LBN_SELCHANGE事件,自动调用相应的OnSelchangeListFile函数,禁用用来输入的文本框控件,禁用查询和上传按钮,激活下载按钮。此时,用户可以点击‘下载’按钮,产生BN_CLICKED事件,自动调用OnDownload函数,调用Download函数,下载该文件。下载完毕,禁用下载按钮,激活查询和上传按钮,激活用来输入的文本框控件。而Download函数重新创建Internet会话,建立FTP连接,下载文件后,将会话对象和连接对象清除。如果要向FTP服务器上传文件,点击“上传“按钮,产生BN_CLICKED事件,调用OnUpload函数,该函数获得当前输入的服务器名、登录用户名和口令,禁用用于输入的文本框控件,禁用查询按钮,禁用用于输入的文本框控件,弹出小对话框,获得待上传的本地机文件路径和文件名,调用Upload函数上传文件。上传完毕,激活查询按钮,激活用于输入的文本和编辑控件。Upload函数也重新创建Internet会话,建立FTP连接,上传文件后,然后清除会话对象和连接对象。实验程序的技术要点:如何创建一个Internet会话,即创建CInternetSession对象;如何建立与FTP服务器的连接,即创建CFtpConnection对象;如果连接成功,如何获得当前登录的目录下的文件和目录名称,即检索一个目录下的文件,并显示文件信息;如何下载文件、上传文件以及关闭连接。程序代码及运行结果:1.使用MFCAppWizard创建应用程序框架工程名是Ftp,应用程序的类型是基于对话框的,其它部分接受系统的默认设置就可以。应用程序包括两个类:应用程序类:CFtp0051App,对应的文件是Ftp0051.h和Ftp0051.cpp。对话框类:CFtp0051Dlg,对应的文件是Ftp0051Dlg.h和Ftp0051Dlg.cpp。2.代码这个程序的类比较少,只需要在CFtp0051Dlg类的Ftp0051Dlg.cpp文件中添加事件函数和成员函数的代码。以下按照它们执行的功能分别介绍。1.查询并显示FTP服务器的当前目录内容当用户输入了服务器名、登录用户名和口令后,点击‘查询’按钮,会产生BN_CLICKED事件,导致执行对应的函数OnQuery()。代码如下:voidCFtp0051Dlg::OnQuery(){//TODO:AddyourcontrolnotificationhandlercodehereCInternetSession*pSession;//定义会话对象指针变量CFtpConnection*pConnection;//定义连接对象指针变量CFtpFileFind*pFileFind;//定义文件查询对象指针变量CStringstrFileName;BOOLbContinue;pConnection=NUL