ftp客户端的设计与实现毕业设计正文_第1页
ftp客户端的设计与实现毕业设计正文_第2页
ftp客户端的设计与实现毕业设计正文_第3页
ftp客户端的设计与实现毕业设计正文_第4页
ftp客户端的设计与实现毕业设计正文_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(此文档为word格式,下载后您可任意编辑修改!)《计算机网络》课程设计说明书题目:ftp客户端的设计与实现学院:计算机科学与工程学院专业:信息安全2015年03月24日

摘要与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。在FTP的使用当中,用户经常遇到两个概念:“下载”(Download)和“上载”(Upload)。“下载”文件就是从远程主机拷贝文件至自己的计算机上;“上载”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上载(下载)文件。使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可上载或下载文件。也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的。匿名FTP是这样一种机制,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。系统管理员建立了一个特殊的用户ID,名为anonymous,Internet上的任何人在任何地方都可使用该用户ID。关键字:FTP;java;远程连接;上传;下载引言 11、系统概述 11.1、系统说明 11.2、系统功能说明 12、需求分析 22.1、系统需求 22.2、开发环境 23、详细设计 33.1、系统设计 33.2、各模块详细设计 43.2.1、图形界面模块 43.2.2、连接登录模块 43.2.3、浏览模块 53.2.4、上传和下载模块 93.2.5、程序总体功能测试 144、所遇到的问题和分析解决 145、结论 17参考文献 18引言随着科学技术的不断提高,计算机网络日渐成熟,其强大的功能已为人们深刻认识,它已进人类社会的各个领域并发挥着越来越重要的作用。其中的文件传输协议(FileTransferProtocol,FTP)是目前Internet上使用得最广泛的文件传送协议。在互联网早期曾占据整个互联网通信量的三分之一。它主要解决了在不同操作系统下处理文件格式的不兼容性。起初,FTP并不是应用于IP网络上的协议,而是20世纪60~80年代美国国防部组建的ARPANET网络中,用于计算机间的文件传输的协议。时至今日,FTP仍然保持其可靠性,高速地传输文件,它还允许文件远程存取。这使得用户可以在某个系统上工作,而将文件存贮在别的系统。传统方式需要在DOS下输入命令,对于普通用户是件极困难的事。为了用户更方便的使用FTP服务,提供更好的人机交互界面,本次课程设计将完成一个简单FTP客户端系统的设计和开发工作,实现服务器连接、远程与本地目录浏览、文件上传和下载等基本FTP工具常用功能。并通过这次课程设计,对网络编程方面有更深入的了解,提高实践能力。1绪论1.1研究背景FTP是Internet上最早也是最广的应用,直到今天它仍是最重要和最基本的应用之一。用FTP将信息下载到本地是一件十分普遍的事。也随之出现了许多下载软件。尽管远程登录(Telnet)提供了访问远程文件的极好方法,但怎么也比不上使用自己计算机中的文件方便。如果用户想使用其它计算机上的文件,最理想的方法就是把它COPY到自己的计算机中,以便在本地计算机上操作。FTP正是完成这项工作的工具,你可以在任意一个经过文件传输协议(FTP)访问的公共有效的联机数据库或文档中找到你想要的任何东西。全世界现在已有1000多个(96年的数据)FTP文件服务器对所有INTERNET用户开使用,用户可以通过与Internet相连到远程计算机,把自己需要的文件传输过来或是把自己的收集传输上去与他人共享。传统的数据库应用系统采用的是客户机/服务器(Client/Server)模式,有高度的交互性,高效的用户界面等优点1.2主要工作通过客户端可以实现文件的上传和下载。其促进文件的共享(计算机程序或数据)、鼓励间接或者隐式的使用远程计算机、向用户屏蔽不同主机中各种文件存储系统的细节和可靠和高效的传输数据。1.3本文结构本文第1部分绪论主要说明了研究背景、主要工作和本文结构。第2部分说明了有关ftp的相关知识。第三部分系统设计,绘制了系统的模块图、流程图和模块的实现。第四部分系统的测试与数据分析,说明了测试遇到的问题、解决方法及系统进一步的优化。第五部分是本课程设计的总结和体会。2相关知识介绍2.1FTP工作原理FTP(FileTransferProtocol),是文件传输协议的简称。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序。用户可以通过它把自己机器与世界各地所有运FTP协议的服务器相连,访问服务器上的资源和信息。FTP协议在TCP/IP协议栈中的位置如表1:表1TCP/IP协议栈HTTPFTPTELNSMTPDNSTFTPNMP应用层TCPUDP传输层IP互联网络层X25ISDNLANWLANFDDIATM网络接口层当启动FTP从远程计算机拷贝文件时,事实上启动了两个程序:一个本地机器上的FTP客户端程序,它向FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的FTP服务器程序,它响应请求把你指定的文件传送到你的计算机中。FTP采用“客户端/服务器”方式,用户要在自己的本地计算机上安装FTP客户端程序。从根本上说,FTP协议就是在网络中各种不同的计算机之间按照TCP/IP协议来传输文件。FTP协议采用客户端/服务器(Client/Sever)模式,由FTP客户端程序和FTP服务器端程序组成。使用时,先启动FTP客户端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予响应,并执行正确的命令。但是FTP有一个根本的限制,那就是,如果用户在某个主机上没有注册获得授权,即没有用户名和口令,就不能与该主机进行文件传输。但匿名FTP服务器除外,它能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“Anonymous”或“guest”就可有限制地访问远程主机上公开的文件。现在许多系统要求用户将Emai1地址作为口令,以便更好地对访问者进行跟综。出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载文件,而不允许上载文件。也就是说,用户只能从匿名FTP主机拷贝其需要的文件而不能把文件拷贝到匿名FTP主机。另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不至于被用户修改和删除,并防止计算机病毒的侵入。匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息、数据和软件。人们只要知道特定信息资源的主机地址,就可以用匿名FTP登陆。2.2FTP工作模式FTP采用C/S(客户端/服务器)模式进行通信,但与其他的C/S模式网络通信协议又有一个很大的区别。通常在进行HTTP通信或是TELNET通信的时候,只需要一个端口进行通信。即客户端只需要连接一个端口进行数据通信。如TELNET的默认端口是23,用户从头到尾都只需使用这个端口。但是FTP通信除了有一个默认端口21之外,还需要其他的端口。其中默认端口(21)主要进行控制连接,进行命令协议和服务器端的响应码的传输;另外一个非标准端口主要进行数据传递,如文件的上载、下载等。至于非标准端口的产生则要根据用户选择的连接模式而定:如果客户选择的是主动模式(PORT),则需要用户端提供给服务器一个IP地址和一个非标准端口;而如果用户采用被动模式(PASV),则服务器端需要提供给客户端一个IP地址和一个非标准端口。下表是几个著名的TCP端口号:表2TCP端口号TCP端口号关键字描述20FTP-DATA文件传输协议数据21FTP文件传输协议控制23TELENET远程登录协议25SMTP简单邮件传输协议53DOMAIN域名服务器80HTTP超文本传输协议110POP3邮局协议119NNTP新闻传送协议FTP中字节大小有两个:逻辑字节大小和用于传输的字节大小。后者通常是8位,而前者可不一定是多少了。传输字节不必等于逻辑字节大小,也不必对数据结构进行解释。控制连接是建立在USER-PIT和SERVER-PI之间用于交换命令与应答的通信链路。数据连接是传输数据的全双工连接,传输数据可以发生在服务器DTP和用户DTP之间也可以发生在两个服务器DTP之间,FTP可以传输非连续的文件,这些文件的一部分称为页。服务器DTP代表一种传输过程,它通常处于“主动”状态,它和侦听端口建立数据连接,它还可以为传输和存储设置参数,并根据PI的指令传输数据。当然,DTP也可以转入“被动”状态。服务器FTP进程,它是和用户FTP进程一起工作的,它由PI和DTP组成。在开始阶段,标准FTP命令由用户PI产生并通过控制连接传送到服务器进程。服务器PI向用户PI返回标准应答。FTP命令指定数据连接参数和文件系统操作。用户DTP在特定数据端口侦听,服务器开始数据连接并以指定的参数开始数据传输。数据端口不必在开始FTP命令的机器上,但用户或用户FTP进程必须确定它在指定的数据端口上侦听.这个数据连接是全双工的。2.3FTP传输模式FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp协议对话,并且能访问Internet,你可以用ftp命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。2.3.1ASCII传输方式假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary命令告诉ftp逐字拷贝,不要对这些文件进行处理。2.3.2二进制传输方式在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢,也会损坏数据,使文件变得不能用。3需求分析3.1、系统需求作为一个完整实用的FTP客户端程序,应该能满足使用人员的各项要求,并有友好的交互使用界面,可以让普通的使用客户很快的上手熟悉,遇到使用困难时有相应的帮助,总的来说其要求主要为以下几点:(1)有较好的图形界面,各个按钮使用说明清楚;(2)能判断输入的指令是否成功,如果输入不成功,返回相应的错误提示;(3)能连接上给定的FTP服务器,返回正确的文件信息;(4)作为客户使用的程序,界面操作应该简单便捷,应该有较有好的输入输出提示和使用说明帮助,在遇到错误时,应有相应的错误提示;3.2、开发环境本系统开发环境为个人电脑,操作系统为Windows7,主要用到netbeans编译环境和JAVA语言。netbeans是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。netbeans附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。最初主要用来进行Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。netbeans的本身只是一个框架平台,但是众多插件的支持使得netbeans拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以netbeans为框架开发自己的IDE。JAVA,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Javaapplet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Javaapplet。3.3客户端主要模块设计3.3.1客户端连接模块运行客户端后,首先是连接服务器,需要输入服务器IP地址,用户名和密码,然后点击连接,观察是否连接成功,若成功则显示远程文件的列表。若连接失败,则抛出异常,弹出对话框显示出错误,可知如何修改,然后重新输入服务器IP地址或用户名或密码,直到连接上服务器。下图为客户端连接流程图:连接服务器连接服务器是否连接成功在信息显示模块显示连接成功获取服务器文件列表刷新服务器文件显示模块信息在信息显示模块显示连接失败用户输入服务器地址及用户名和密码是否图3-1客户端连接流程图服务器模块的主要代码为:publicSocketdataConnection(Stringctrlcmd){Stringcmd="PORT";//PORT存放用PORT命令传递数据的变量inti;SocketdataSocket=null;//传送数据用Sockettry{//得到自己的地址byte[]address=InetAddress.getLocalHost().getAddress();//用适当的端口号构造服务器serverDataSocket=newServerSocket(0,1);//准备传送PORT命令用的数据for(i=0;i<4;++i)cmd=cmd+(address[i]&0xff)+",";cmd=cmd+(((serverDataSocket.getLocalPort())/256)&0xff)+","+(serverDataSocket.getLocalPort()&0xff);//利用控制用的流传送PORT命令ctrlOutput.println(cmd);ctrlOutput.flush();//向服务器发送处理对象命令(LIST,RETR,及STOR)ctrlOutput.println(ctrlcmd);ctrlOutput.flush();//接受与服务器的连接dataSocket=serverDataSocket.accept();serverDataSocket.close();}catch(Exceptione){e.printStackTrace();System.exit(1);}returndataSocket;} 3.3.2上传模块用户在连接上服务器后,可以在本地列表中选择需要上传的文件,并指定上传位置,将本机上的文件上传至FTP服务器。不能选择文件夹,只能选择文件。若上传失败,则抛出异常;如果成功上传,则提示上传成功。并通过断开与远程服务器的连接。下图为上传子模块流程图:点击上传按钮点击上传按钮弹出文件选择对话框获得用户选择的文件名新建一个上传任务登录到FTP服务器目标目录下清除线程在信息显示模块中显示上传成功在信息显示模块中显示上传成功在信息显示模块中显示上传失败上传是否成功选择需要上传的文件将信息传送至任务重新获取服务器文件列表是否图3-2上传模块流程图上传模块的主要代码为:publicvoiddoPut(){StringfileName="";BufferedReaderlineread=newBufferedReader(newInputStreamReader(System.in));try{intn;byte[]buff=newbyte[1024];FileInputStreamsendfile=null;//指定文件名System.out.println("本地文件");fileName=lineread.readLine();//准备读出客户端上的文件//BufferedInputStreamdataInput=newBufferedInputStream(newFileInputStream(fileName));try{sendfile=newFileInputStream(fileName);}catch(Exceptione){System.out.println("文件不存在");return;}System.out.println("远程文件");Stringlonfile=lineread.readLine();//准备发送数据的流SocketdataSocket=dataConnection("STOR"+lonfile);OutputStreamoutstr=dataSocket.getOutputStream();while((n=sendfile.read(buff))>0){outstr.write(buff,0,n);}dataSocket.close();sendfile.close();}catch(Exceptione){e.printStackTrace();System.exit(1);}}3.2.3下载模块当用户在服务器文件列表中选择想要下载的文件后,选择需要下载文件在本机上的存储位置,设置上传模式为被动模式;将服务器上的文件下载至本机,如果成功下载,则提示下载成功,若失败则抛出异常,此过程可连续进行直到想退出。下图为下载子模块流程图:选择要下载的文件点击下载按钮选择要下载的文件点击下载按钮获取文件信息新建下载任务登录到FTP服务器目标目录下清除线程在信息显示模块中显示下载成功更新服务器文件列表在信息显示模块中显示下载失败下载文件是否成功选择文件在本机存储位置将信息传送至任务重新获取服务器文件列表是否图3-2下载模块流程图下载模块的主要代码:publicvoiddoGet(){StringfileName="";Stringloafile="";BufferedReaderlineread=newBufferedReader(newInputStreamReader(System.in));try{intn;byte[]buff=newbyte[1024];//指定服务器上的文件名System.out.println("远程文件名");fileName=lineread.readLine();//在客户端上准备接收用的文件System.out.println("本地文件");loafile=lineread.readLine();Filelocal=newFile(loafile);FileOutputStreamoutfile=newFileOutputStream(local);//构造传输文件用的数据流SocketdataSocket=dataConnection("RETR"+fileName);BufferedInputStreamdataInput=newBufferedInputStream(dataSocket.getInputStream());//接收来自服务器的数据,写入本地文件while((n=dataInput.read(buff))>0){outfile.write(buff,0,n);}dataSocket.close();outfile.close();}catch(Exceptione){e.printStackTrace();System.exit(1);}}4调试与操作说明4.1运行方法在程序中输入服务器的IP、用户名、和密码,点击“连接”按钮即可等待连接服务器。然后可选择本地文件上传到服务器或选择远程文件下载到本地。Upload和Download分别为上传、下载按钮。4.2运行结果FTP服务器连接前和连接后,此过程要正确的输入服务器IP地址,用户名和密码,本地文件栏的文件为本机C盘的内容,连接成功后在远程文件栏会出现服务器上的文件,则也标志着连接成功:图4-1ftp服务器连接前图4-2ftp服务器连接后如果未选择文件就会弹出对话框,“”,如果想选择文件可先选中文件夹,双击进去来选择:图4-3选择文件夹图4-4选择下一层文件选择文件后,点击Upload或Download两个按钮即可实现上传和下载,上传或下载的文件都可在远程文件或本地文件里查找到,如果上传或下载成功会有提示:图4-5上传和下载增,删改本地的文件目录,控制远程的文件目录5遇到的问题及分析经过这次的课程设计,我选择了易于完成图形界面的java语言来进行开发,在经过了一周的网上查询原理和图书馆查找资料之后,更加明白了整体的构造和设计图,也出现了很多的问题,首先是服务器的问题,如何实现用代码连接到远程服务器,根据服务器的制定端口和ip地址来完成指定的连接,参考文献[1]谢希仁.计算机网络(第五版)[M].北京:电子工业出版社,2008:232—23.[2]程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论