FTP客户端程序设计

上传人:一招 文档编号:175562171 上传时间:2021-03-24 格式:DOCX 页数:46 大小:33.01KB
返回 下载 相关 举报
FTP客户端程序设计_第1页
第1页 / 共46页
FTP客户端程序设计_第2页
第2页 / 共46页
FTP客户端程序设计_第3页
第3页 / 共46页
FTP客户端程序设计_第4页
第4页 / 共46页
FTP客户端程序设计_第5页
第5页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《FTP客户端程序设计》由会员分享,可在线阅读,更多相关《FTP客户端程序设计(46页珍藏版)》请在金锄头文库上搜索。

1、FTP客户端程序设计网络程序设计课程设计报告书题目:FTP客户端程序专业:网络工程学号:学生姓名:指导教师:完成日期:一、题目及要求程序能实现基本的FTP客户端功能,能登陆FTP服务器,显示登陆客户目录下的文件和目录名,能从该目录中选择下载服务器的文件,也能向服务器上传文件。该程序是基于对话框的MFC程序,程序界面布置要点:三个文本编辑框,分别用于输入FTP服务器域名、登陆用户名和登陆口令。一个列表框,用来显示FTP服务器当前目录的内容,并允许客户从中选择文件下载。四个命令按钮分别执行查询、上传、下载和退出的功能。用户执行程序的流程是:1)进行各种操作之前,应首先输入服务器域名、登陆用户名和口

2、令。2)如果要进行查询,可以点击“查询”按钮,调用OnQuery函数。该函数获得用户当前输入的服务器名、登陆用户名和口令等信息,清除列表框的内容;然后创建Internet会话类对象,进行服务器的登陆,试图建立与指定FTP服务器的连接;如果连接成功,就创建ftpFileFind文件检索类对象,查找服务器上当前目录的任意文件,找到了第一个文件后,继续找其他的文件,并将找到的文件或目录名显示在列表框中。所有文件找到后,结束查询,并依次删除文件查询对象、FTP连接对象和Internet会话对象,结束会话。3)此时,可以从服务器下载文件。从列表框中选择一个文件,会产生LBN_SELCHANGE事件,自动

3、调用相应的OnSelchangeListFile函数,禁用用来输入的文本框控件,禁用查询和上传按钮,激活下载按钮。此时,用户可以点击“下载”按钮,产生BN_CLICKED事件,自动调用OnDownLoad函数,调用DownLoad函数,下载该文件。下载完毕,禁用下载按钮,激活查询和上传按钮,激活用来输入的文本框控件。而DownLoad函数重新创建Internet会话,建立FTP 连接,下载文件后,将会话对象和连接对象清除。4)如果要向FTP服务器上传文件,点击“上传”按钮,产生BN_CLICKED 事件,调用OnUpLoad函数,该函数获得当前输入的服务器名、登陆用户名和口令,禁用用于输入的文

4、本框控件,禁用查询按钮,禁用用于输入的文本框控件,弹出小对话框,获得待上传的本地机文件路径和文件名,调用UpLoad函数上传文件。上传完毕,激活查询按钮,激活用于输入的文本和编辑控件。UpLoad函数也重新创建Internet会话,建立FTP连接,上传文件后,然后清除会话对象和连接对象。可见,此程序的查询、上传和下载功能基本是独立的。每次都要创建会话、建立连接,执行操作,然后清除对象。这时是为了简单清楚起见而这样做的。此程序的主要技术要点是:如何创建一个Internet会话,即创建CinternetSession对象;如何建立与FTP 服务器的连接,即创建CftpConnection对象;如果

5、连接成功,如何获得当前登陆的目录下的文件和目录名称,即检索一个目录下的文件,并显示文件信息;如何下载文件、上传文件以及关闭连接。二、系统概要设计实现技术:(1)创建Internet会话,建立于FTP服务器的连接。(2)检索登陆目录下的所有文件及其子目录(3)上传、下载文件(4)关闭与服务器的连接本程序中使用的雷包括CInternetSession类、CFtpConnection类以及CFtpFileFind类。其中CInternet类用于创建一个Internet会话,CFtpConnection 类用于文件的上传与下载服务,CFtpFileFind类用于检索目录下的文件及其子目录。三、系统详细

6、设计程序运行界面图(1)控件、变量、函数清单:1.实现文件查询及显示:建立基于对话框的MFC应用程序(FTP_Client)。对查询按钮控件(ID: IDC_BUTTON1)的BN_CLICKED事件添加事件处理函数OnQuery(),代码如下:void CFTP_ClientDlg:OnQuery()UpdateData(); /获取编辑框中的域名、用户名、密码传递到成员变量m_dname、m_user、m_psw中while(m_List.GetCount()!=0)m_List.DeleteString(0); /如果列表框不为空清空列表ListContent(); /调用ListCon

7、tent()函数在上面的函数中,使用ListContent()函数来专门负责文件及子目录的显示。向CFTP_Client类中添加函数,函数名为ListCont,类型为private,返回值为void,代码如下:void CFTP_ClientDlg:ListContent()CInternetSession *psession;CFtpConnection *pconnection;CFtpFileFind *pfilefind;CString filename;BOOL bcontinue;pconnection=NULL;pfilefind=NULL;/创建Internet会话psessi

8、on=new CInternetSession(AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS);try /试图建立FTP连接pconnection=psession-GetFtpConnection(m_dname,m_user,m_psw); catch(CInternetException *e) /错误处理e-Delete();pconnection=NULL;if(pconnection!=NULL)m_btn2.EnableWindow(); /成功建立连接将上传按钮设为可用状态pfilefind=new CFtpFileFind(pcon

9、nection);bcontinue=pfilefind-FindFile(*); /查找当前目录的任意文件if(!bcontinue) /查找结束pfilefind-Close();pfilefind=NULL;while(bcontinue) /查找成功filename=pfilefind-GetFileName(); /获得查找到的文件名if(pfilefind-IsDirectory() /判断是否为文件目录filename=+filename; /对文件目录添加标记filename+=;m_List.AddString(filename); /向列表框中添加文件bcontinue=p

10、filefind-FindNextFile(); /寻找下一个文件if(pfilefind!=NULL) /判断是否找到pfilefind-Close(); /查询结束pfilefind=NULL;/删除对象delete pfilefind;if(pconnection!=NULL)pconnection-Close();delete pconnection;delete psession;在上述函数中,首先创建一个Internet会话对象,利用该对象建立与FTP服务器的连接;然后创建CFtpFileFind对象,使用其构造函数,向其传递一个FTP 连接类的对象。2.文件的下载当用户选择列表框

11、中的某一项时,表明用户可能会下载该文件,这是界面应发生相应的变化,禁用用来输入服务器域名、用户名与密码的编辑框,禁用查询与上传按钮。下载按钮被激活,表示用户可以进行下载工作。如果用户放弃下载操作,只需界再对话框界面单击右键即可。在CFTP_Client类中为列表控件(ID: IDC_LIST1)的BN_SELCHANGE事件添加事件响应函数,代码如下:void CFTP_ClientDlg:OnSelchangeList1()/ TODO: Add your control notification handler code herem_EDIT1.EnableWindow(FALSE); /

12、禁用编辑框控件m_EDIT2.EnableWindow(FALSE); /禁用编辑框控件m_EDIT3.EnableWindow(FALSE); /禁用编辑框控件m_btn1.EnableWindow(FALSE); /禁用查询按钮m_btn2.EnableWindow(FALSE); /禁用上传按钮m_btn3.EnableWindow(); /启用下载按钮在CFTP_Client类中为WM_RBUTTONDOWN事件添加事件响应函数,代码如下:void CFTP_ClientDlg:OnRButtonDown(UINT nFlags, CPoint point)/ TODO: Add yo

13、ur message handler code here and/or call defaultm_EDIT1.EnableWindow(); /启用编辑框控件m_EDIT2.EnableWindow(); /启用编辑框控件m_EDIT3.EnableWindow(); /启用编辑框控件m_btn1.EnableWindow(); /启用查询按钮m_btn2.EnableWindow(); /启用上传按钮m_btn3.EnableWindow(FALSE); /禁用下载按钮CDialog:OnRButtonDown(nFlags, point);当用户单击下载按钮时,程序会根据用户选择的文件以

14、用户输入的文件名下载相应文件到用户指定在本机上的存储路径处,若用户选择下载的是目录文件,程序会提示错误。在CFTP_Client类中为下载按钮(ID:IDC_BUTTON1)的BN_CLICKED事件添加事件响应函数,代码如下:void CFTP_ClientDlg:OnDOWNLOAD()UpdateData();int nsel;CString fname;nsel=m_List.GetCurSel();m_List.GetText(nsel,fname);if(fname.GetAt(0)!=) /判断是否为目录文件CString pname;CFileDialog dlg(FALSE,

15、*.*);if(dlg.DoModal()=IDOK) /用户指定存储路径与文件名pname=dlg.GetPathName();if(GetFile(fname,pname) /调用文件下载函数AfxMessageBox(下载成功!,MB_OK|MB_ICONINFORMATION);elseAfxMessageBox(下载失败!,MB_OK|MB_ICONSTOP);elseAfxMessageBox(请输入文件名!,MB_OK|MB_ICONSTOP);elseAfxMessageBox(此为目录,不能下载!n请重新选择!,MB_OK|MB_ICONSTOP);/禁用/启用各编辑框、按钮m_EDIT1.EnableWindow();m_EDIT2.EnableWindow();m_EDIT3.EnableWindow();

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

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