![FTP客户端设计与实现_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-11/3/0837839c-deef-4c4e-906b-29ec59967386/0837839c-deef-4c4e-906b-29ec599673861.gif)
![FTP客户端设计与实现_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-11/3/0837839c-deef-4c4e-906b-29ec59967386/0837839c-deef-4c4e-906b-29ec599673862.gif)
![FTP客户端设计与实现_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-11/3/0837839c-deef-4c4e-906b-29ec59967386/0837839c-deef-4c4e-906b-29ec599673863.gif)
![FTP客户端设计与实现_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-11/3/0837839c-deef-4c4e-906b-29ec59967386/0837839c-deef-4c4e-906b-29ec599673864.gif)
![FTP客户端设计与实现_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-11/3/0837839c-deef-4c4e-906b-29ec59967386/0837839c-deef-4c4e-906b-29ec599673865.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ftp 客户端设计与实现作者姓名作者姓名刘 青指导教师指导教师袁 军所学专业所学专业 计算机科学与技术 班级班级 07 计 b1所属院系所属院系信息学院学习年限学习年限 2007 年年 9月至月至 2010 年年 7 月月二 年月学号:学号:20078401212007840121本 科 毕 业 论 文(设 计)目目 录录ftp 客户端的设计与实现 .i1. 引言 .12. ftp 协议简介.13. ftp 工作模式.24. ftp 传输模式 .25 ftp 客户端总体设计.36.需求分析 .37.详细设计 .48所遇到的问题和分析解决 .137系统特色及关键技术 .138结语 .14iftp
2、 客户端的设计与实现学生姓名:刘 青指导教师:袁 军内容提要 ftp 是internet 上用来传送文件的协议。它是为了我们能够在internet 上互相传送文件而制定的文件传送标准,规定了internet 上文件如何传送。通过ftp 协议,我们就可以跟internet 上的ftp 服务器进行文件的上传或下载。本文以实现一个简单易用的ftp 客户端为目标,通过分析ftp 协议的基本工作原理和ftp 的数据传输原理,研究如何使用c工具对ftp 客户端进行设计。关键词 ftp客户端 c 上传下载山西大学商务学院本科毕业论文(设计)91. 引言ftp 是 tcp/ip 协议组中的协议之一,是英文 f
3、iletransferprotocol 的缩写。该协议是 internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。ftp 是 internet 上最早也是最广的应用,直到今天它仍是最重要和最基本的应用之一。用 ftp 将信息下载到本地是一件十分普遍的事。也随之出现了许多下载软件。尽管远程登录提供了访问远程文件的极好方法,但怎么也比不上使用自己计算机中的文件方便。假如用户想使用其它计算机上的文件,最理想的方法就是把它 copy 到自己的计算机中,以便在本地计算机上操作。ftp 正是完成这项工作的工具。
4、2. ftp 协议简介ftp(file transfer protocol)意为文件传输协议,它允许用户在 internet 的一台主机和另一台主机之间进行发送和接收文件,是 internet 上使用非常广泛的一种通讯协议。它是由支持 internet文件传输的各种规则所组成的集合,这些规则使 internet 用户可以把文件从一个主机拷贝到另一个主机上,因而为用户提供了极大的方便和收益。通常我们把采用这种协议的应用程序也称为 ftp。ftp通常用于将网页从创作者上传到服务器上供人使用或者从服务器上下传文件,极大地促进了网络文件的资源共享。从根本上说,ftp 协议就是在网络中各种不同的计算机之
5、间按照 tcp/ip 协议来传输文件。ftp 协议采用客户机/服务器 (client/sever)模式,由 ftp 客户端程序和 ftp 服务器端程序组成。使用时,先启动 ftp 客户端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予响应,并执行正确的命令。但是 ftp 有一个根本的限制,那就是,如果用户在某个主机上没有注册获得授权,即没有用户名和口令,就不能与该主机进行文件传输。但匿名 ftp 服务器除外,它能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“anonymous”或“guest”就可有
6、限制地访问远程主机上公开的文件。现在许多系统要求用户将 emai1 地址作为口令,以便更好地对访问者进行跟综。出于安全的目的,大部分匿名 ftp 主机一般只允许远程用户下载(download)文件,而不允许上载(upload)文件。也就是说,用户只能从匿名 ftp 主机拷贝其需要的文件而不能把文件拷贝到匿名 ftp 主机。另外,匿名 ftp 主机还采用了其他一些保护措施以保护自己的文件不至于被用户修改和删除,并防止计算机病毒的侵入。匿名 ftp 一直是 internet 上获取信息资源的最主要方式,在 internet 成千上万的匿名 ftp 主机中存储着无以计数的文件,这些文件包含了各种各样
7、的信息、数据和软件。人们只要知道特定信息资源的主机地址,就可以用匿名 ftp 登陆。3. ftp 工作模式ftp 采用 c/s(客户机/服务器)模式进行通信,但与其他的 c/s 模式网络通信协议又有一个很大的区别。通常在进行 http 通信或是 telnet 通信的时候,只需要一个端口进行通信。即客户端只需要连接一个端口进行数据通信。如 telnet 的默认端口时 23,用户从头到尾都只需和这个端口打交道。但是 ftp 通信除了有一个默认端口 21 之外,还需要其他的端口。其中默认端口(21)主要进行控制连接,进行命令协议和服务器端的响应码的传输;另外一个非标准端口主要进行数据传递,如文件的上
8、载、下载等。至于非标准端口的产生则要根据用户选择的连接模式而定:如果客户选择的是主动模式(port),则需要用户端提供给服务器一个 ip 地址和一个非标准端口;而如果用户采用被动模式(pasv),则服务器端需要提供给客户端一个 ip 地址和一个非标准端口。4. ftp 传输模式ftp 协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp 协议对话,并且能访问internet,你可以用ftp命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。ftp的传输有两种方式:
9、ascii传输模式和二进制数据传输模式。4.1 ascii 传输方式假定用户正在拷贝的文件包含的简单ascii码文本,如果在远程机器上运行的不是unix,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处山西大学商务学院本科毕业论文(设计)9理。4.2 二进制传输方式在二进制
10、传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到windows系统,在对方系统上,此文件不能执行。如果你在ascii方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢,也会损坏数据,使文件变得不能用。如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。5 ftp 客户端总体设计本系统实现了一个简单的 ftp 客户端,能够列出/更改目录,实现上下传文件,显示文件列表等选项。程序在 windows 环境下,通过 vc+语言编写实现。界面简洁大方,思路清晰,方便
11、用户的操作。功能简便快捷。在实现 ftp 客户端程序的代码中,主要分为1. 连接治理模块:主要完成主机与服务器之间的连接与关闭操作。2.文件治理模块:主要完成文件的显示、新建文件、删除文件等。3.文件传输模块:主要完成主机与服务器连接成功以后文件的上传与下载。6.需求分析6.1系统需求可以安装在 微软 windows 98/me/nt/2000/me/xp/2003/vista cpu pentium iii 800 128m 内存 10m 磁盘空间 6.2开发工具此次的开发工具为 qt designer;qt 同 x window 上的 motif,openwin,gtk 等图形界 面库和
12、windows 平台上的 mfc,owl,vcl,atl 是同类型的东西,但是 qt 具有下列优点:1. 优良的跨平台特性: qt 支持下列操作系统: microsoft windows 95/98, microsoft windows nt, linux, solaris, sunos, hp-ux, digital unix (osf/1, tru64), irix, freebsd, bsd/os, sco, aix, os390,qnx 等等。 2. 面向对象 qt 的良好封装机制使得 qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。 qt 提供了一种称为 si
13、gnals/slots 的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单。 3. 丰富的 api qt 包括多达 250 个以上的 c+ 类,还替供基于模板的 collections, serialization, file, i/o device, directory management, date/time 类。甚至还包括正则表达式的处理 功能。4. 支持 2d/3d 图形渲染,支持 opengl5. 大量的开发文档6. xml 支持7.详细设计7.1 客户端与服务器连接山西大学商务学院本科毕业论文(设计)9ftp 是建立在 tcp 之上的连接,端口号使用
14、21。若客户端与服务器之间成功连接,获得服务器根目录的所有文件并在列表框中显示。/连接 ftp 服务器void cmyftpdlg:onconnect() updatedata(true);/新建对话m_pinetsession=new cinternetsession(afxgetappname(),1,pre_config_internet_access);try /新建连接对象m_pftpconnection=m_pinetsession-getftpconnection(m_strserver,m_strusername,m_strpassword); catch(cinternete
15、xception *pex) /获取错误tchar szerror1024;if(pex-geterrormessage(szerror,1024)afxmessagebox(szerror);else afxmessagebox(there was an exception);pex-delete();m_pftpconnection=null;return;m_premotefinder = new cftpfilefind(m_pftpconnection);/获得服务器根目录的所有文件并在列表框中显示browsedir(,&m_ctrlremotefiles,m_premote
16、finder,&m_arrremotefiles);7.2 获取目录与显示在建立的列表框中,显示出远程计算机目录和本地计算机目录。如目录下仍然有子文件,则在点击“下一层”按钮后,列表框显示该文件的子文件,如该文件已经是文件,那么则不变。/初始化两个列表框控件setlistctrlstyle(&m_ctrllocalfiles);setlistctrlstyle(&m_ctrlremotefiles);addheaders(&m_ctrllocalfiles);addheaders(&m_ctrlremotefiles);/本地文件目录以 c 盘为根目录b
17、rowsedir(c:,&m_ctrllocalfiles,&m_localfinder,&m_arrlocalfiles);return true; / return true unless you set the focus to a controlvoid cmyftpdlg:onsyscommand(uint nid, lparam lparam)if (nid & 0 xfff0) = idm_aboutbox)caboutdlg dlgabout;dlgabout.domodal();山西大学商务学院本科毕业论文(设计)9elsecdialog:on
18、syscommand(nid, lparam);/ if you add a minimize button to your dialog, you will need the code below/ to draw the icon. for mfc applications using the document/view model,/ this is automatically done for you by the framework.void cmyftpdlg:onpaint() if (isiconic()cpaintdc dc(this); / device context f
19、or paintingsendmessage(wm_iconerasebkgnd, (wparam) dc.getsafehdc(), 0);/ center icon in client rectangleint cxicon = getsystemmetrics(sm_cxicon);int cyicon = getsystemmetrics(sm_cyicon);crect rect;getclientrect(&rect);int x = (rect.width() - cxicon + 1) / 2;int y = (rect.height() - cyicon + 1) /
20、 2;/ draw the icondc.drawicon(x, y, m_hicon);elsecdialog:onpaint();/ the system calls this to obtain the cursor to display while the user drags/ the minimized window.hcursor cmyftpdlg:onquerydragicon()return (hcursor) m_hicon;/获得指定目录下的所有文件,并在列表框中显示void cmyftpdlg:browsedir(cstring strdir,clistctrl* p
21、lstctrl,cfilefind* pfinder,carray* pfilesarr)/清空列表框plstctrl-deleteallitems();pfilesarr-removeall();int nindex = 0;cstring szdir = strdir;if(szdir.right(1) != )szdir += ;szdir += *.*;山西大学商务学院本科毕业论文(设计)9/查找目录下的文件bool res = pfinder-findfile(szdir);while(res)res = pfinder-findnextfile();/是目录if(pfinder-i
22、sdirectory() & !pfinder-isdots()fileitem fileitem;fileitem.nitem = nindex;fileitem.bdir = true;fileitem.strfilename = pfinder-getfilename();pfilesarr-add(fileitem);additem(plstctrl,nindex,true,pfinder-getfilename();/是文件else if(!pfinder-isdirectory() & !pfinder-isdots()fileitem fileitem;filei
23、tem.nitem = nindex;fileitem.bdir = false;fileitem.strfilename = pfinder-getfilename();pfilesarr-add(fileitem);additem(plstctrl,nindex,false,pfinder-getfilename();nindex+;7.3 文件的上传与下载通过按钮控制文件的上传和下载,只能是文件,如果是文件夹,则提示不能下载。/响应“download”按钮void cmyftpdlg:ondownload() /如果没有建立连接,退出if(m_pftpconnection=null)re
24、turn;/下载所有选中文件position pos = m_ctrlremotefiles.getfirstselecteditemposition();if (pos = null)afxmessagebox(请选择要下载的文件);elsewhile (pos)int nitem = m_ctrlremotefiles.getnextselecteditem(pos);downfile(m_arrremotefiles.getat(nitem);/响应“upload”按钮void cmyftpdlg:onupload() 山西大学商务学院本科毕业论文(设计)9/如果没有建立连接,退出if(
25、m_pftpconnection=null)return;/上传所有选中文件position pos = m_ctrllocalfiles.getfirstselecteditemposition();if (pos = null)afxmessagebox(请选择要上传的文件);elsewhile (pos)int nitem = m_ctrllocalfiles.getnextselecteditem(pos);upfile(m_arrlocalfiles.getat(nitem);/下载单个文件void cmyftpdlg:downfile(fileitem fileitem)if(fi
26、leitem.bdir = true)afxmessagebox(本程序暂时不支持下载整个文件夹,请选择文件下载);else/格式化文件名cstring strlocalfile,strremotefile;strremotefile.format(%s%s,m_premotefinder-getroot(),fileitem.strfilename);strlocalfile.format(%s%s,m_localfinder.getroot(),fileitem.strfilename);/下载if(m_pftpconnection-getfile(strlocalfile,strloca
27、lfile)cstring strmsg;strmsg.format(下载文件%s 成功!,fileitem.strfilename);afxmessagebox(strmsg);/上传单个文件void cmyftpdlg:upfile(fileitem fileitem)if(fileitem.bdir = true)afxmessagebox(本程序暂时不支持上载整个文件夹,请选择文件上载);else/格式化文件名cstring strlocalfile,strremotefile;strremotefile.format(%s%s,m_premotefinder-getroot(),fileitem.strfilename);strlocalfile.format(%s%s,m_localfinder.getroot(),fileitem.strfilename);山西大学商务学院本科毕业论文(设计)9/上传if(m_pftpconnection-putfile(strlocalfile,strlocalfile)cstring strmsg;strmsg.format(上载文件%s 成功!,fileitem.strfilename);afxmessagebox(strmsg);8所遇到的问题和分析解决在编程的过程中,在实现 ftp 客户端与服务器连接的功能时,可能出现了一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030全球开放式框架工业显示器行业调研及趋势分析报告
- 2025年全球及中国平盘电滑环行业头部企业市场占有率及排名调研报告
- 2025-2030全球TGV基板行业调研及趋势分析报告
- 2025年全球及中国完全生物基聚酰胺行业头部企业市场占有率及排名调研报告
- 幼儿绘本讲述与演绎幼儿绘本讲述的停连运用技巧讲解
- 2025景区商场蛇年新春嘉年华活动策划方案
- 2025绿洲集团工程合同管理规范
- 沙石采购合同范本工程合同
- 2025【合同范本】打印机耗材长期供货合同
- 防雷技术服务合同
- 第2课+古代希腊罗马(教学设计)-【中职专用】《世界历史》(高教版2023基础模块)
- 中储粮兰州公司考试笔试题库
- 焊接机器人在汽车制造中应用案例分析报告
- 重建成长型思维课件
- 电捕焦油器火灾爆炸事故分析
- 质量问题分析及措施报告
- 汽修厂安全风险分级管控清单
- 现代通信原理与技术(第五版)PPT全套完整教学课件
- 病例展示(皮肤科)
- DB31T 685-2019 养老机构设施与服务要求
- 燕子山风电场项目安全预评价报告
评论
0/150
提交评论