郑州轻工业学院课程设计报告题目:FTP协议程序实现姓名:彭方举院系:国际教育学院专业班级:网络工程13-05学号:541312150513指导教师:尹毅峰张俊松杨杰成绩:时间:2015年12月28日至2015年12月31日任务书一、课程设计题目FTP协议程序实现二、设计方案课程设计的内容是参考网络协议理论及实现,实现下面的两个功能:1.文件传输协议FTP服务器搭建:该功能是用Serv-U架设个人FTP服务器,可以设定多个FTP服务器,可以限定登录用户的权限、登录目录及服务器空间大小。2.FTP客户端FTP客户端软件是在了解FTP工作原理后,利用C#语言或者Java来设计和开发的。FTP客户端分为连接模块、文件管理模块、文件传输模块和辅助管理模块。目录1.前言………………………………………………………………11.1.背景与意义………………………………………………11.2.所做工作…………………………………………………11.3.系统的主要功能…………………………………………22.课程设计目的及内容……………………………………………22.1.基本要求……………………………………………………22.2.内容…………………………………………………………23.课程设计任务实现………………………………………………34.所遇到的问题及分析解决………………………………………34.1.问题列表…………………………………………………34.2.解决方法…………………………………………………45.关键技术…………………………………………………………46.测试……………………………………………………………106.1.功能及性能的测试………………………………………106.2.功能实现情况……………………………………………117.结论……………………………………………………………127.1.完成情况………………………………………………127.2.有待改进之处及改进展望………………………………127.3.特殊说明…………………………………………………137.4.心得体会…………………………………………………131.前言1.1.背景与意义FTP(FileTransferProtocol)文件传输协议是Internet上最早出现的,同时也是应用最广泛的,直到今天它仍是最重要和最基本的应用之一。FTP提供交互式访问,允许客户指明文件类型与格式;同时FTP屏蔽了各种计算机系统的细节,因而适合在异构网中任意计算机之间传输文件。随着网络的普及,越来越多局域网的出现,用FTP将信息下载到本地是一件非常普遍的事情,也随之出现了许多FTP下载软件。由于FTP操作简单实用,开放性强,且能充分利用Internet来进行信息传递与交流,所以目前越来越多的FTP服务器连入Internet,这样越来越多的资源就可以通过匿名FTP来获得。据不完全统计全世界现在已有数千个FTP文件服务器对所有Internet用户开放使用,用户可以通过与Internet相连到远程计算机,把自己需要的文件传输过来或是把自己的收集传输上去与他人共享。传统的应用系统采用的是客户机/服务器(Client/Server)模式,有高度的交互性,有高效的用户界面等优点。随着网络技术的发展和因特网应用的普及,互联网已成为人们获取信息的重要来源。互联网的一大特点是实现信息共享,而文件传输是信息共享的重要内容之一。首先,FTP充分体现了互联网的共享性和开放性,对其进一步研究,有利于实现互联网资源的共享与充分利用,加速信息的传递与交流。其次,FTP客户端软件的实现有助于进一步熟悉VisualStudio.NET开发环境,掌握一定的Windows开发应用程序技术,同时也有助于提高自己的编程能力和熟悉FTP的工作过程。最后,制作一个界面友好、快速、稳定的FTP客户端下载软件,对信息的快速共享起着一定的作用。这样让用户能第一时间和别人共同分享信息资源。1.2.所做工作FTP(FileTransferProtocol),是文件传输协议的简称。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序。用户可以通过它把自己机器与世界各地所有运FTP协议的服务器相连,访问服务器上的资源和信息。FTP采用C/S(客户端/服务器)模式进行通信,但与其他的C/S模式网络通信协议又有一个很大的区别。通常在进行HTTP通信或是TELNET通信的时候,只需要一个端口进行通信。即客户端只需要连接一个端口进行数据通信。FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp协议对话,并且能访问Internet,你可以用ftp命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。首先通过运行软件Serv-U来架设一个ftp服务器,其大概步骤是通过向导指引一步一步设置域名和相关的账户设置,最后使个人FTP服务器设置生效。在学习和了解FTP工作原理后,通过所学习的C#语言知识来设计和开发FTP客户端。而FTP客户端分为连接模块、文件管理模块、文件传输模块和辅助管理模块,总共四个模块。客户端的功能是通过访问个人FTP服务器可以实现文件的上传和下载。其促进文件的共享(计算机程序或数据)、鼓励间接或者隐式的使用远程计算机、向用户屏蔽不同主机中各种文件存储系统的细节和可靠和高效的传输数据。图1-1FTP工作模式的总体结构图1.3.系统的主要功能本系统是简单FTP客户端的设计与实现,FTP客户端主要分为连接模块、文件管理模块、文件传输模块和辅助管理模块。连接模块实现主机与服务器的连接的功能;文件管理模块实现新建文件、删除文件等功能;文件传输模块实现主机与服务器连接成功后上传和下载文件功能。辅助管理模块实现一些相关功能如:读写配置INI文件。FTP客户端主要功能按钮:用户登陆、用户断开、文件上传、文件下载界面。实现部分:设计为一个用户界面,上面包括各种用户按钮、文本输入栏、状态栏等等。具体如下:服务器地址信息输入栏、端口信息输入栏、用户名、密码输入栏、用户登陆(连接)按钮、用户退出(断开连接)按钮、服务器文件显示列表框、下载文件按钮、上传文件按钮、状态栏。2.课程设计目的及内容2.1.基本要求1.FTP服务器的搭建。使用Serv-U架设FTP服务器,设定多个FTP服务器,限定登录用户的权限、登录目录及服务器空间大小。2.FTP客户端的设计与实现。理解FTP工作原理,用自己熟悉的程序设计语言来实现FTP客户端。客户端实现主体功能:用户登录和断开FTP服务器,文件的上传和下载,文件的传输状态栏和完成状态栏。FTP客户端分为连接模块、文件管理模块、文件传输模块和辅助管理模块。2.2.内容FTP客户端的设计与实现,实现用户登录和文件传输,主要分为连接、上传、下载三个模块,连接模块主要是连接到FTP服务器,上传模块主要是上传文件,下载模块主要是下载文件。用户登录是用来让用户输入服务器IP地址,用户名,密码。上传模块是对文件的操作,登录到FTP服务器后,FTP客户端会显示出FTP服务器目录和文件列表,当你双击“返回上层目录”或者“目录”时会改变当前目录,选定好目录后便可对文件进行上传操作。下载模块是对文件的操作,登录到FTP服务器后,FTP客户端会显示出FTP服务器目录和文件列表,当你双击“返回上层目录”或者“目录”时会改变当前目录,选定目录后选定好文件便可对文件进行下载操作。3.课程设计任务实现FTP客户端的设计与实现,主要分为连接、上传、下载三个模块,连接模块主要是连接到FTP服务器,上传模块主要是上传文件,下载模块主要是下载文件。系统总体的功能模块图如图3–1所示:FTP客户端软件系统连接模块上传模块下载模块发起连接接收连接上传文件下载文件图3-1系统总体功能结构图系统的连接模块主要是给用户提供一个连接FTP服务器的平台,只有成功连接到FTP服务器,FTP客户端才可以登录到FTP服务器进行相关的操作。系统连接模块图如图3-2所示:连接模块发起连接接收连接图3-2系统连接模块功能结构图系统的上传模块是对文件的操作,登录到FTP服务器后,FTP客户端会显示出FTP服务器的文件列表,选定好目录内文件后便可对文件进行上传操作。系统的下载模块是对文件的操作,登录到FTP服务器后,FTP客户端会显示出FTP服务器的文件列表,选定目录内文件便可对文件进行下载操作。4.所遇到的问题及分析解决4.1.问题列表1)在把FTP客户端主界面功能控件布置完成后,运行出错;2)输入用户名和密码后虽然成功访问,但没有提示框信息出现;3)在模块代码都填进去后调试程序后运行出错。4.2.解决方法1)通过运行出错后的提示信息我又检查了界面代码,发现少了一个接口;2)通过对自己所写的代码与老师所给的源代码对比,发现代码放错了位置,函数没有被调用;3)通过运行时提示的错误信息发现有的按钮控件代码失效,没有放在类里面,导致调用失败,系统无法识别,通过为其赋类调用成功5.关键技术登录模块:实现通过输入用户名和密码登录到FTP服务器,连接到FTP客户端。以下为“登录“模块的源代码:#region登陆///FTP服务器IP地址privatestringstrRemoteHost;publicstringRemoteHost{get{returnstrRemoteHost;}set{strRemoteHost=value;}}///FTP服务器端口privateintstrRemotePort;publicintRemotePort{get{returnstrRemotePort;}set{strRemotePort=value;}}///当前服务器目录privatestringstrRemotePath;publicstringRemotePath{get{returnstrRemotePath;}set{strRemotePath=value;}}///登录用户账号privatestringstrRemoteUser;publicstringRemoteUser{set{strRemoteUser=value;}}///用户登录密码privatestringstrRemotePass;publicstringRemotePass{set{strRemotePass=value;}}///是否登录privateBooleanbConnected;publicboolConnected{get{returnbConnected;}}#endregion连接模块:程序运行后会提示输入用户名和密码。运行客户端后,首先是连接服务器,需要输入服务器IP地址,用户名和密码,然后点击连接,观察是否连接成功,若成功则显示远程文件的列表。若连接失败,则抛出异常,弹出对话框显示出错误,可知如何修改,然后重新输入服务器IP地址或用户名或密码,直到连接上服务器。若输入用户名与密码后,点击连接按钮会以此做为其用户名及密码与FTP服务器建立连接;随后是对“连接”按钮的设置,实现与服务器端的连接,断开按钮是对服务器的断开功能。以下为“连接“模块的代码:#region链接///建立连接publicvoidConnect(){socketControl=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);IPEndPointep=newIPEndPoint(IPAddress.Parse(RemoteHost),strRemotePort);}try{socketControl.Connect(ep);}catch(Exception){thrownewIOException(Couldn'tconnecttoremoteserver);}//获取应答