FTP客户端与服务器设计与实现课设报告.docx

上传人:b****6 文档编号:4829449 上传时间:2022-12-10 格式:DOCX 页数:27 大小:368.33KB
下载 相关 举报
FTP客户端与服务器设计与实现课设报告.docx_第1页
第1页 / 共27页
FTP客户端与服务器设计与实现课设报告.docx_第2页
第2页 / 共27页
FTP客户端与服务器设计与实现课设报告.docx_第3页
第3页 / 共27页
FTP客户端与服务器设计与实现课设报告.docx_第4页
第4页 / 共27页
FTP客户端与服务器设计与实现课设报告.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

FTP客户端与服务器设计与实现课设报告.docx

《FTP客户端与服务器设计与实现课设报告.docx》由会员分享,可在线阅读,更多相关《FTP客户端与服务器设计与实现课设报告.docx(27页珍藏版)》请在冰豆网上搜索。

FTP客户端与服务器设计与实现课设报告.docx

FTP客户端与服务器设计与实现课设报告

本科生专业方向应用实训科研训练

FTP客户端与服务器的设计与实现

Designandimplementationofandserver

学生姓名

蒲凤

专业

软件工程

学号

140521221

指导教师

高培成尹大力祝勇

学院

计算机科学技术

二〇一七年七月

起止周

17~19

周数

3

实习地点

计算机学院专业实验室

选题

自选

科研训练目的:

实训的目的是使学生在学完专业课程后,学会并掌握软件开发的基本技能,巩固已学的知识,补充未学的但又必要的内容。

通过了解并实践常见的软件开发过程进行系统开发,并且使用相关语言进行专业方向的系统实现。

科研训练要求:

1.了解实际项目分析、设计、开发、测试、部署等完整流程;

2.熟练使用常用程序开发工具进行开发;

3.养成良好的表达、沟通和团队协作能力,掌握快速学习方法,培养良好的分析问题和解决问题的能力。

科研训练主要内容:

1.软件开发能力:

培训学生的编程思想和基本工作技能,培养与提高学生的编程能力。

2.软件工程能力:

按照软件工程的思想,训练学生掌握面向对象分析/设计(UML建模)、编码规范、概要设计方法、详细设计方法、模块划分方法等技能。

3.工程实践能力:

按照专业方向或学生就业方向选择一个项目进行实际开发,完成整个开发过程。

4.项目文档管理能力:

实训最终要提交实训报告,包括项目需求分析、总体设计、详细设计、系统测试,及最终总结。

指导教师评语:

 

成绩:

指导教师/带队教师(签字)

 

2017年7月日

摘要

随着互联网技术的飞速发展,信息共享的时代己经到来。

在实现数据传输与信息共享的诸多方式中,FTP无疑是应用最广的一种方式。

FTP协议是计算机网络中的应用层协议,提供了可靠的文件传输功能,并且具有跨平台特性,两个不同类型的操作系统只要都支持FTP协议就可以进行文件传输工作。

因此,探讨文件传输协议(FTP)的内容和工作原理,分析F'I'P客户端与服务器的连接过程及F'I'P请求与应答工作模式,设计C/S架构下的FTP系统的实现方案,在.NET平台利用C#语言搭建起FTP系统的窗体界面,并且使用.NET类库实现了文件上传、删除和修改等功能。

关键词:

FTP协议服务器客户端.NET

Abstract

WiththerapiddevelopmentofInternettechnology,theeraofinformationsharinghasarrived.Inmanywaysofrealizingdatatransmissionandinformationsharing,undoubtedlythemostwidelyusedmethod.isanapplicationlayerprotocolincomputernetwork,providesareliablefunction,andhasthecharacteristicsofcrossplatform,twodifferenttypesofoperatingsystemaslongascansupporttheforwork.Therefore,toexploretheprotocol(FTP)contentandworkingprinciple,analysisoftheconnectionprocessandtheF'I'PrequestandresponsemodeF'I'PtheclientandtheserverimplementationschemeofdesignundertheC/Sframework,thewindowbodyinterface.NETplatformusingC#languagetobuild,andusethe.NETLibrarytoachievethe,deleteandmodifyfunctions.

Keywords:

;server;client;.net

第一章绪论

网络的首要目的就是实现信息共享,文件传输是其中重要的一个方面,随着Internet的迅猛发展,信息数据的传输量大大增加,数据的网络传输显得越来越重要。

利用FTP(Protocol)文件传输协议来实现远程文件的传输是软件设计常用的方法。

FTP是基于客户端/服务器结构的文件传输协议,它相对成熟,并有着改进和增强FTP文件传输协议的相关协议支持。

目前FTP客户端软件很多,主要分为3类:

第一类是传统的DOS环境下的FTP操作,由于其效率低和操作繁琐,目前使用很少;第二类是图形化界面的FTP软件,目前主要有WS-等;第三类是浏览器,同样支持FTP协议,但速度相对于专业软件来说较慢。

设计并实现了FTP服务器/客户端,能实现连接、下载、上传等功能,操作简便、交互性强。

1.1研究背景

互联网技术的飞速发展,推动了全世界范围内资料信息的传输与共享,深刻地改变了人们的工作和生活方式。

FTP技术作为文件传输的重要手段,己经得到了广泛的使用。

通常人们可以使用电子邮箱、即时通讯客户端(例如QQ)和FTP客户端来进行资料的传输。

在这几种常用的方式中,电子邮箱必须以附件的形式来传输文件,并且对文件大小有限制;即时通讯客户端中的文件传输一般要求用户双方必须在线,如今虽然增加了离线传输的功能,但该功能本质上是通过服务器暂时保存用户文件实现的,与FTP原理类似。

此外通过这两种方式传输文件资料有一个共同的缺陷:

需要传输的文件无法以目录系统的形式呈现给用户。

所以,FTP文件传输系统有其无可替代的优势,在文件传输领域始终占据重要地位,因此对其进行的研究颇有现实意义。

FTP之所以流行于全世界很大程度归功于匿名FTP使用及推厂。

用户不需要注册就可以通过匿名FTP登录到远程主机来获取所需的文件。

所以,每一位用户都可以在匿名FTP主机上获取所需的文件,匿名FTP为世界各个角落的人提供了一条通往巨大资源库的道路,人们可以在资源库中自由下载所需要的资源,并且这个资源库还在不断地扩充中。

另外在Internet上,匿名FTP是软件分发的主要方式,许多程序通过匿名FTP分布,每一个程序开发者都可以搭建FTP服务器来发布软件。

早期的FTP文件传输系统以命令行的形式呈现,发展至今涌现出很多图形界面的FTP应用软件,比较常见的有F1ashFXP、CuteFTP,Serv-U。

这些FTP软件都采用C/S架构,即包含客户端和服务器两个部分,基于FTP协议实现信息交互。

用户通过客户端进行基本的上传下载操作,实现资源文件的共享。

然而,绝大部分网络浏览器提供的文件下载器并不具备文件资源管理功能或管理起来很不方便,另外,市面上大部分FTP软件都是收费、不开源的并且会出现功能冗余、配置繁琐的情况。

所以自主设计一个客户端与服务器两者兼具并且具备良好人机交互界面的FTP文件传输系统就显得尤为重要。

1.2国内外研究现状

1971年,第一个(RequestForComments,是一系列以编号排定的文件,包含了关于Internet几乎所有重要的文字资料)由A.K.Bhushan提出,同一时期由MIT和Havard实现,即RFC114。

在随后的十几年中,FTP协议的官方文档历经数次修订,直到1985年,一个作用至今的FTP官方文档RFC959问世。

如今所有关于FTP的研究与应用都是基于该文档的。

FTP服务有一个重要的特点就是其实现并不局限于某个平台,在Windows,DOS,UNIX平台下均可搭建FTP客户端及服务器并实现互联互通。

自FTP协议的第一个RFC版本发布以来,历经数十年的发展,海内外涌现出来众多优秀的支持FTP协议的软件。

国外的软件有:

Serv-U,F1ashFXP,CuteFTP等;国内的软件有:

迅雷、网络蚂蚁、ChinaFTP等。

其中国外的软件大部分需要付费使用,国内几乎没有FTP开源软件,软件质量参差不齐,难以保证安全性。

虽然目前大部分操作系统都自带FTP功能,但是自带的FTP功能都是基于命令行进行操作,这就需要用户熟记相关操作指令,不够人性化,用户使用起来相当不便,所以很有必要设计一个开源的、功能完善的、具有友好人机交互界面的FTP文件传输系统。

1.3课程设计主要研究内容和架构

本课题是在VisualStudio2013开发环境下开发FTP客户端以及服务器。

基于.net平台和标准FTP协议开发,主要涉及到多线程网络编程的诸多技术,比如网络I/O,线程同步等技术。

本课题设计的FTP客户端有其特色功能:

支持文件传输,同时具备良好的人机交互界面;设计的FTP服务器采用了多线程技术,使得服务器能够从容应对高并发访问。

本课题主要工作是在.net环境下开发网络应用程序,在开发的过程中所做的工作如下:

(1)熟悉计算机网络,TCP/IP模型以及FTP标准协议。

(2)熟悉VisualStudio2013开发工具和C#编程语言。

(3)研究、类,熟练掌握编写网络应用程序的方法。

(4)研究基于流的I/O操作模式和多线程编程技术并将其应用于所开发的程序。

(5)设计并实现FTP客户端/服务器,实现了预期的功能,解决了高并发访问的问题。

第二章需求分析

2.1需求分析

作为一个实用的FTP系统,基本功能必不可少,包括用户登录以及用户信息验证,此外最重要就是文件上传与下载。

用户在使用FTP客户端时,可以选择主动模式或者被动模式连接服务器。

可以选择验证用户名与密码或者匿名登陆。

服务器会验证用户名与密码,判断用户能否登上服务器,划分用户的权限。

这样可以保障安全性。

用户使用FTP客户端程序主要为访问服务器,获取或者上传服务器文件。

本文FTP系统采用C/S模式完成文件上传与下载,服务器与客户端分别完成数据连接时的信息发送与响应返回功能,两者配合使用,使得FTP系统具有较强的实用性。

2.2功能列表

表2-1功能列表

功能分组

功能名

功能简要说明

登录与注销

登录服务器

要核对用户名和密码,判断是否为匿名用户,显示不同功能模块

退出服务器

与服务器断开连接,功能模块不可用

模式选择

选择连接模式

使用主动连接模式或者被动连接模式

选择传输类型

选择Binary或者ASCII数据传输类型

目录管理

显示列表

将服务器的文件资源显示在列表中

跳转目录

输入路径改变当前目录

新建目录

在服务器端新建文件夹,需要用户实名登陆

重命名文件夹

将服务器文件夹重命名,需要用户实名登陆

文件管理

上传文件

将本地文件上传至服务器,需要用户实名登陆

下载文件

将服务器文件下载至本地

删除文件

将服务器文件从服务器删除,需要用户实名登陆

重命名文件

将服务器文件重命名,需要用户实名登陆

2.3系统权限

普通用户登陆后拥有所有功能。

匿名用户匿名登陆后只拥有下载功能以及目录跳转要求。

第三章技术方案

3.1.NET架构平台

.NET是MicrosoftXMLWebservices平台,XMLWebservices的应用程序是通过Internet进行通讯和共享数据,而与操作系统、设备和编程语言无关。

Microsoft.NET平台也正提供了创建XMLWebservices功能并将相关服务集成在一起,使用户可无缝地使用。

3.1.1.NET的体系结构

框架由公共语言运行时(CLR)、共享对象类库,ASP.NET三部分组成,其体系架构如图3-1所示。

图3-1.NET框架组成图

公共语言运行时(CommonLanguageRuntime,CLR)是架构在操作系统服务之上的,是所有.NET程序语言公用的运行时期组件。

它是负责应用程序的实际执行,满足所有应用程序的需求,如果要执行任一程序语言开发出的程序,就必须安装该程序语言的运行时期组件,因为它包含了该语言程序的核心功能,如函数和对象等。

共享对象类集成了不同程序语言的对象库,成为所有程序共享的对象库,其中包括Web类(ASP.NET)、数据类(ADO.NET),XML类、绘图类、系统类、Windows窗体类等,它既是.NET应用软件开发的基础类库,也是.NET平台本身的实现基础,其中.NET类库的组织是以命名空间为基础的,最顶层的名字空间为System。

ASP.NET是共享对象类库中的一员,它提供了一个Web应用程序模型,其中该模型提供了一些Web窗体、控件及基础架构,该模型的作用能让程序设计者可轻松地建立Web应用程序;它提供了一些对应HTML元素的HTML控件以及功能更强的Web控件,这些控件在服务器端执行,然后在客户端的浏览器以HTML的方式显示。

3.1.2.NET框架的特色

1、透过因特网的标准做整合。

以XML(extensibleMarkupLanguage,延伸标注语言)及SOAP(SimpleObjectAccessProtocol,简单对象存取协议)等标准通讯协议,将各种由不同环境所组成的应用程序及组件整合在一起工作。

2、松散的整合组件。

现阶段,要建立多层且功能可扩充的系统,其架构非常复杂,而且工具很少,而.NETFramework不需要很严谨的定义每个组件的结构即可很轻松的整合,提高程序的扩展性。

3、支持多种程序语言。

许多程序设计者会使用多种语言来开发他们的解决方案,这是因为每种语言都有它的长处,.NETFramework把这些语言整合起来,可以让开发人员使用不同的程序语言来开发解决方案:

4、提高程序的开发效率。

利用.NET框架的自动内存管理,以及丰富的控件等特色,可使程序设计人员减少写程序会发生的问题,专心于撰写企业处理数据的规则,从而,缩短项目的开发时间。

5、完善的数据安全。

目前因特网最受大家注目的是它的安全性,.NETFramework在设计安全模型时将所有的数据与程序代码做完善的安全防护。

6、可用操作系统的服务。

Windows提供了比其它作业平台更丰富的服务及资源,.NETFramework将这些操作系统所提供的功能包装起来,以更简单的方式提供给程序设计者使用。

3.2开发工具

3.2.1VisualStudio

MicrosoftVisualStudio(简称VS)是美国微软公司的开发工具包系列产品。

VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。

所写的目标代码适用于微软支持的所有平台,包括MicrosoftWindows、WindowsMobile、WindowsCE、.NETFramework、.NETCompactFramework和MicrosoftSilverlight及WindowsPhone。

VisualStudio是目前最流行的Windows平台应用程序的集成开发环境。

最新版本为VisualStudio2017版本,基于.NETFramework4.5.2。

第四章总体设计

4.1系统体系结构模型

开发FTP服务器/客户端软件必须遵循FTP的工作模式,FTP独特的优势在于它在两台通信主机之间使用了两条TCP连接,一条用于数据传送,一条用于控制信息的传送。

这种将命令和数据分开传送的思想大大提高FTP工作的效率。

图4-1给出本系统的体系结构模型。

图4-1FTP体系结构模型

客户端与服务器建立连接是典型的“三次握手”,过程如下:

客户端发送请求与服务器控制连接的协议包;服务器同意建立连接,发送应答;最后,客户端向服务器发送确认,至此,连接建立。

与此同时,FTP要求客户向服务器提供用户名和口令,一旦连接成功一个或多个文本或图像二进制文件都能被安全传送,在整个交互过程中,控制连接始终处于连接状态,数据连接在每一次文件传送时先打开后关闭,FTP依靠可靠传输协议TCP,不必担心可靠性和连接的管理。

4.2FTP系统模型

FTP(Protocol)文件传送协议,位于OSI体系中的应用层,是一个用于从一台主机向另一台主机传送文件的协议,基于C/S架构。

用户通过FTP客户端连接到在某个远程主机上的FTP服务器。

用户通过FTP客户端向服务器程发送指令,服务器根据指令的内容执行相关操作,最后将结果返回给客户端。

例如,用户向FTP服务器发送文件下载命令,服务器收到该命令后将指定文件传送给客户端,并将执行结果返回给客户端。

FTP系统和其他C/S系统的不同之处在于它在客户端和服务器之间同时建立了两条连接来实现文件的传输,分别是控制连接和数据连接。

控制连接用于客户端和服务器之间的命令和响应的传递;数据连接则用于传送数据信息。

当用户通过FTP客户端向服务器发起一个会话的时候,客户端会通过熟知端口21与FTP服务器建立一个TCP连接,即控制连接。

客户端使用此连接向FTP服务器发送所有FTP命令并读取所有应答。

而对于大批量的数据,如数据文件或详细目录列表,FTP系统会建立一个独立的数据连接去传送相关数据。

以主动传输方式为例,客户端使用PORT命令向服务器发送地址和端口,服务器与客户端指定的地址和端口建立连接,然后在这条连接上面进行文件的上传或下载。

FTP工作模型示意图如图4-2所示。

图4-2FTP工作模型示意图

4.3系统工作流程设计

FTP客户端的工作流程设计如下:

(1)用户输入用户名和密码进行登录操作。

(2)连接FTP服务器成功后发送PORT或PASV命令选择传输模式,处理TYPE命令确定数据传输方式。

(3)发送LIST命令通知服务器将目录列表发送给客户端。

(4)服务器通过数据通道将远程目录信息发送给客户端,客户端对其进行解析并显示到对应的服务器目录列表框中。

(5)通过控制连接发送相应的命令进行文件的下载和上传、目录的下载和上传以及目录的新建或删除等操作。

(6)启动下载或上传线程执行文件的下载和上传任务。

(7)使用结束,断开与FTP服务器的连接。

FTP系统工作流程图如图4-3所示。

图4-3FTP系统工作流程图

4.4系统功能模块介绍

按照需求分析中的功能列表,以及对每个模块的功能分析,可以整理得出系统的功能模块总体结构如图4-4所示:

图4-4系统功能模块总体结构图

4.2.1登陆与注销

登陆时,用户可以选择实名登陆或者匿名登陆。

不同的登陆方式将显示不同的功能界面,从而达到动态的赋予用户不同的权限,增加了服务器的安全性。

实名用户可以使用FTP服务器的所有功能。

匿名用户只能下载服务器上的文件。

注销将断开客户端与服务器的连接,使所有的功能不可用。

4.2.2模式选择

用户可以选择主动连接方式或者被动连接方式与服务器进行连接。

主动模式下客户端高位端口与服务器低位端口连接,被动模式下客户端高位端口与服务器高位端口连接。

数据传输方式可以选择Binary格式或者ASCII格式。

4.2.3文件管理

文件管理模块是系统的主要模块,是用户在客户端进行的主要活动,也是所有FTP系统的基本模块。

文件管理中包括上传文件、下载文件、重命名文件、删除文件,其中上传文件、重命名文件和删除文件需要用户实名登陆才可以使用。

4.2.4目录管理

用户每次对ftp服务器上的文件进行一次操作后,客户端都会刷新一次列表,显示最新的目录列表。

目录管理中包括显示列表、跳转目录、删除目录、重命名目录,其中删除目录和重命名目录需要用户实名登陆才可以使用。

第五章详细设计

FTP客户端实现的主要功能分为三类:

登录与注销、文件管理、目录管理。

5.1登陆与注销

FTP客户端登录流程图如图5-1所示:

图5-1FTP客户端登录流程图

客户端首先通过NetworkCredential类实例化对象,通过它我们可以在网络中提供一个凭证,只有获得该凭证的用户才能访问相应的服务的权限。

客户端向服务器发送“USER”命令,服务器调用CommandUser()函数检查用户名命令是否正确。

该命令正确后,服务器端向客户端发送响应代码,进入下一步,即检验密码。

客户端向服务器发送“PASS”命令,服务器调用CommandPassword()函数获得相应的用户密码,进入TryGetValue()函数,检验用户名和密码是否正确。

如果用户名、密码均正确,发送响应代码“230User成功登陆”;如果密码错误,发送响应代码“530密码错误”;如果用户名或者密码其中一个错误,则发送响应代码“530用户名或密码错误”;否则则发送响应代码“501PASS命令语法错误”。

客户端的注销功能则更容易实现。

客户端通过命令通道向服务器发送“QUIT”命令,服务器响应该命令,调用Close()函数,关闭TCP连接并释放与其关联的所有资源。

如图5-2所示

图5-2FTP客户端退出流程图

5.2文件管理

文件管理是FTP系统中最重要的功能之一,它分为文件下载、文件上传、文件重命名和文件删除。

5.2.1文件下载

文件下载的原理就是在本地新建同名文件并在数据通道接收数据,然后将数据写入文件。

客户端文件下载的过程介绍如下:

选中需下载的文件,点击下载按钮触发btndownload_Click()消息响应函数,在消息响应函数里客户端通过类实例化对象,调用Create()函数向服务器发送请求,发送“RETR”命令,服务器调用CommandRETR()函数发送响应代码“150”到客户端,表示服务器文件状态良好,将要打开数据连接传输文件。

客户端通过类实例化对象,调用Get()函数获取服务器响应信息,读取response对象的状态码和状态描述信息。

在数据通道打开后,多次调用文件流函数在数据通道接收数据。

之所以要多次接收数据是因为文件并不是一次性传输过来的,而是每次接收8196比特的数据。

客户端每次从数据通道获取一部分数据并将其追写到己创建的文件里,直至接受数据失败。

客户端文件下载流程如图5-3所示。

图5-3文件下载流程图

5.2.2文件上传

文件上传的原理是读取本地文件数据,将数据通过数据通道发送给服务器,服务器再将数据写入远程文件。

客户端文件上传流程如图4.7所示。

选中需上传的文件,点击上传按钮触发btnUpload_Click()消息响应函数,在消息响应函数里客户端通过类实例化对象,调用Create()函数向服务器发送请求,发送“STOR”命令,服务器调用CommandRETR()函数发送响应代码“150”到客户端,表示服务器文件状态良好,将要打开数据连接传输文件。

客户端通过类实例化对象,调用Get()函数获取服务器响应信息,读取response对象的状态码和状态描述信息。

在数据通道打开后,多次调用文件流函数在数据通道上传数据,将本地文件发送至服务器,直到读取文件数据为空。

客户端文件上传流程如图5-4所示。

图5-4文件上传流程图

5.2.3文件重命名

客户端通过lstbx选中需重命名的文件,点击重命名按钮触发btn_rename_Click()消息响应函数,在消息响应函数里客户端通过类实例化对象,调用Create()函数向服务器发送请求,发送“RNFR”命令,服务器调用CommandRNFR()函数发送响应代码“250”到客户端,表示服务器文件存在且接受重命名。

发送“RNTO”命令,服务器调用CommandRNTO()函数发送响应代码“250”

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1