文件传输系统的设计与实现.docx

上传人:b****7 文档编号:11070489 上传时间:2023-02-24 格式:DOCX 页数:23 大小:550.37KB
下载 相关 举报
文件传输系统的设计与实现.docx_第1页
第1页 / 共23页
文件传输系统的设计与实现.docx_第2页
第2页 / 共23页
文件传输系统的设计与实现.docx_第3页
第3页 / 共23页
文件传输系统的设计与实现.docx_第4页
第4页 / 共23页
文件传输系统的设计与实现.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

文件传输系统的设计与实现.docx

《文件传输系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《文件传输系统的设计与实现.docx(23页珍藏版)》请在冰豆网上搜索。

文件传输系统的设计与实现.docx

文件传输系统的设计与实现

            

JISHOUUNIVERSITY

专业课课程论文

 

题目:

文件传输系统的设计与实现

作 者:

学  号:

所属学院:

信息科学与工程学院

专业年级:

计算机科学与技术

总评分:

完成时间:

文件传输系统的设计与实现

 

摘 要

互联网的一大特点是实现信息共享,文件传输是信息共享的十分重要的内容之一。

随之出现了许多FTP服务器来共享一些信息资源,编写一个操作简单,方便的FTP客户端来下载这些资源受到了人们的极大的欢迎。

FTP是一种用于在网上传输文件的协议,从原理上说,FTP是一个客户/服务器模式的应用协议。

它用两个连接来实现:

一个是控制连接,用来连接服务器和实现文件操作;一个是数据连接,用来实现数据传输。

FTP的实现核心是命令/应答模式,FTP客户端将用户的所有FTP相关请求都转化为FTP服务器可识别的命令,然后发送到服务器,并接收和处理执行完毕后服务器传回的应答.

本程序是一个小型FTP服务器系统,实现了FTP服务器所应该具备的大多数功能,包括用户的登录,文件的上传、下载、删除,选择数据传输模式、目录选择等,并给出相应的提示。

通过该程序的开发,基本上实现了一个FTP服务器所应该具有的功能,能够解释一般的FTP命令,并且符合RFC59规范。

本程序采用VC++6.0作为开发工具,设计步骤采用自顶向下的方法。

关键词:

客户端;服务器;下载;上传;FTP

第一章引言1

1。

1课题背景及意义1

1.2课题研究现状1

1.3研究内容2

第二章FTP协议与原理3

2。

1FTP简介3

2。

3FTP运行原理ﻩ4

2.4FTP文件传输连接类型4

第三章 开发环境及工具介绍ﻩ6

3.1C语言概述ﻩ6

3。

2VC++介绍ﻩ6

3.3 VC++6.0集成环境介绍6

第四章FTP服务器需求分析ﻩ8

4。

1FTP文件传输的需求8

4。

3功能分析9

5.1功能要求10

5.2开发工具10

5.4 菜单栏功能模块11

第六章系统测试18

6。

1系统可能出现的问题与不足ﻩ18

6。

3测试的过程与结果分析ﻩ18

总结ﻩ20

参考文献21

第一章ﻩ引言

1.1课题背景及意义

现代科技给我们带了翻天覆地的变化,互联网就是这诸多变化之一,而且它无时不刻包围着你.可以这样说,21世纪是互联网的世纪。

互联网是人类科技发展史中成长最快的新鲜事物,从诞生到高度发展仅仅用了二十几年,而未来的发展前景更是一片光明。

每个人可能已经感觉到了它的发展,从大大小小的网络公司到各种各样的网上商店、书店、网吧、网上银行等,就连电影院也都搬到了网上,你可以足不出户的欣赏美国大片.

早在20世纪90年代初,internet和worldwideweb(简称WWW)已经被大家熟知。

最近几年internet的发展更是神速,它已经深深触及到我们的生活和工作的方方面面.随着许多新兴技术在internet中的推广应用,使用它的自身发展更日趋完善,它为用户也带来了越来多的实惠和便利。

毫不夸张地说,无论你在世界上的哪个角落,只要通过互联网,你就可以同亲人朋友、甚至是陌生人相互交流,而且形式多样。

互发邮件、交换文件、彼此聊天这已经很平常了,而现在随着网络、通信技术的相结合,已经出现了可视电话、网络家电、电子商务等。

网络用户可以通过大大小小的各类网站或主页。

他们已经越来越离不开网络,而且已经把企业网络建设纳入了未来企业发展最重要的环节.是互联网最大的凝聚力所在,它是一个巴罗万象的信息服务系统.

在生活中,以国际互联网(internet)为主要特征的信息基础设施正在改变人们的生活方式,自选共享已经成为人们生活的迫切需要。

尽管远程登录(telnet)提供了访问远程文件的极好方法,但怎么也比不上使用自己计算机的文件方便。

如果用户想使用其它计算上的文件,最理想的方法就是把它copy到自己的计算机中,以便在本地计算机上操作。

ftp正是完成这项工作的工具,你可以在任意文件传输协议(ftp)访问的公共有效的联机数据库或文档中找到你想要的任何东西。

1.2课题研究现状

1971年,第一个FT的RFC(RFC114 )由A. K。

Bhushan在1971年提出, 同时由 MIT与Harvard实验实现;1972 年,RFC172提供了主机间文件传输的一个用户级协议;1973年2月,在长期讨论(RFC265,RFC294,RFC354,RFC385,RFC430)后,出现了一个官方文档RFC454;1973年8月,出现了一个修订后的新官方文档RFC542 。

确立了FTP的功能、目标和基本模型 。

当时数据传输协议采用NCP;1980年,由于底层协议从NCP改变为TCP,RFC765定义了采用TCP的 FTP;1985年,一个作用持续至今的官方文档RFC959(STD9)出台。

用FTP传输文件,本来用户事先应在远方系统注册,但后来为了便于大家获取资源,FTP在互联网上有一种特殊的也是非常广泛的应用是匿名FTP(anonymousFTP).通过Internet,任何用户可以使用FTP和一个公用账号去获得一些公用资源。

在Internet上目前有许许多多的这种公用计算机,我们把这种用来做匿名FTP服务的计算机称作FTP服务器,对每一个连入Internet的用户,只要知道这些FTP服务器的地址,就可以与它们连接并获取上面各种资源。

由于FTP操作简单实用,开放性强,且能充分利用Internet来进行信息传递与交流,所以目前越来越多的FTP服务器连入Internet,这样越来越多的资源就可以通过匿名FTP来获得.

1.3研究内容

文件传输系统是为了满足庞大的计算机网络系统实现文件共享和数据传输的需要而设计的。

本文在VC+ + 语言平台上,依据应用层的文件传输协议的基本原理,从切身实际出发,开发了一款文件传输系统。

该系统能登录服务器,实现文件的下载和上传,以及文件的添加和删除的相关操作。

在此过程中,首先ftp客户端将用户名、密码和链接端口发送到指定ip地址,尝试与ftp服 务端建立连接;其次,登录成功后,用户将要传输文件的进行编码,发送到ftp 服务器;最后,待数据传输结束,ftp客户端发出QUIT指令,结束ftp连接。

通过前期规划,中期编写代码,后期调试和测试程序,这款模拟器能实现基本功能 ,但如果为了满足商业化需求,就得我们后期进一步优化。

 

第二章FTP协议与原理

2.1FTP简介

FTP是tcp/ip协议中的协议之一,是英文FileTransferProtocol的缩写。

该协议是Inernet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。

简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称为“下载"文件。

若将文件从自己计算机中国拷贝至远程计算机上,则称之为“上传”文件.在Tcp/Ip协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20.

从根本上说,FTP协议就是在网络中各种不同的计算机之间按照TCP/IP协议来传输文件。

FTP协议采用客户机/服务器模式,由FTP客户端程序和FTP服务器端程序组成。

使用时,先启动FTP客户端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给与响应,并执行正确的命令。

但是FTP有一个根本的限制,那就是如果用户在某个主机上没有注册获得授权,既没有用户名和口令,就不能与该主机进行文件传输.但匿名FTP服务器除外,它能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。

用户使用特殊的用户名就可有限制的访问远程主机上公开的文件。

限制许多系统要求用户将邮件地址作为口令,以便更好的对访问者进行跟踪。

出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载文件,而不允许上传文件.另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不至于被用户修改和删除,并防止计算机病毒的侵入。

匿名一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息、数据和软件。

人们只要知道特定信息资源的主机地址,就可以匿名FTP登录。

2。

2 FTP的工作原理

FTP是TCP/IP的一种具体应用,它工作在OSI模型的第七层,TCP模型的第四层上,即应用层,使用TCP传输而不是UDP,这样FTP客户在和服务器建立连接前就要经过一个被广为熟知的“三次握手”的过程,它带来的意义在于客户与服务器直接的连接是可靠的,而且是面向连接,为数据的传输提供了可靠的保证。

采用FTP协议可使Internet用户高效的从网上的FTP服务器下载大信息量的数据文件,将远程主机上的文件拷贝到自己的计算机上.以达到资源共享和传递信息的目的。

由于FTP的使用使得Internet上出现大量为用户提供下载服务器.Internet成为了一个巨型的软件仓库.在文件传输中还支持断点续传功能,可以大幅度的减小和网络带宽的开销。

2。

3FTP运行原理

FTP的工作原理与其他许多网络实用程序一样,也是基于客户/服务器模式.互联网文件传输协议标准是FTC959在说明的。

该协议定义了一个在远程计算机系统和本地计算机系统之间传输文件的标准。

一般来说,要传输文件的用户需先经过认证以后才能登陆服务器,访问在远程服务器的文件。

大多数的FTP服务器往往提供一个guest的公共账户来允许没有FTP服务器账户用户可以访问该FTP服务器.一个FTP会话通常包括五个软件元素的交互。

就模型而言,从1973年以来并没有什么变化.

FTP协议模型

2。

4 FTP文件传输连接类型

一个完整的FTP文件传输需要建立两种类型的连接,一种为文件传输下命令,称为控制连接,另一种实现真正的文件传输,称为数据连接.

1·控制连接

客户端希望与FTP服务器建立上传下载的数据传输时,它首先向服务器的端口发起一个建立连接的请求,FTP服务器接收来自客户端的请求,完成连接的建立过程,这样的;连接就称为FTP控制连接。

2·数据连接

FTP控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。

FTP数据连接就是FTP传输数据的过程,它有两种传输模式:

主动传输模式和被动传输模式,如图所示。

主动传输模式和被动传输模式

ﻬ第三章开发环境及工具介绍

3.1 C语言概述

C语言是在70年代初创建的一种计算机语言,它既有汇编语言可以直接访问机器硬件的功能,又具有高级语言面向用户、可读行好和易于记忆的优点,因此受到广大程序员的欢迎。

C是一种结构化的程序设计语言。

它由顺序、选择和循环三种基本结构组成,便于实现有上到下、逐步细化的结构化程序设计。

因此,用C编写的程序具有容易理解和便于维护的优点。

C语言的函数结构有利于程序分割为相对独立的功能模块,为大型软件实现模块化的程序设计创作了条件。

C没有依赖于硬件的输入和主、输出语句,因此用它编制的程序有较好的可移植性。

C语言首先在Unix操作系统中得到了应用,由于它的这些优点很快成为当前应用最为广泛的计算机语言.

3。

2VC++介绍

VisualC++6。

0是微软公司推出的开发应用程序(Windows95/98/2000/XP/NT)的、面向对象的可视化集成工具。

它的最大的优点就是提供了功能强大的MFC类库,MFC是一个很大的C++类层次结构,其中封装了大量的类及其函数,很多Windows程序所共有的标准内容可以由MFC的类来提供,MFC类为这些内容提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓,这将简化编程工作大大的减少程序员编写的代码数量,使编程工作变得更加轻松容易。

3。

3VC++6.0集成环境介绍

VisualC++提供可一个集源程序编辑、代码编译与调试于一体的开发环境,这个环境称为集成开发环境,对于集成开发环境的熟悉程度直接影响程序设计的效率。

开发环境是程序员同VisualC++的交互界面,通过它程序员可以访问C++源代码编辑器、资源编辑器,使用内部调试器,并且可以创建工程文件。

MicrosoftVisualC++有两个版本,对于每一个版本,都有对应的文档.

1)专业版本,它包括一个更高级的优化变压器,更广泛的文档,并能设计基于DOS的应用程序。

2)标准版本,其费用较低,没有那么高级的编译器,文档较少,且不能设计基于DOS的应用程序。

ﻬ第四章FTP服务器需求分析

4.1 FTP文件传输的需求

Internet上早期实现传输文件,并不是一件容易的事,我们知道Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet上的计算机已有上千万台,而这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP.基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。

与大多数Internet服务一样,FTP也是一个客户机/服务器系统。

用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。

用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。

比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会相应这条命令,将指定文件送至用户的机器。

FTP(FileTransferProtocol文件传输协议)是Internet上用来传送文件的协议。

在Internet上通过FTP服务器可以进行文件的上传(Upload)或下载(Download)。

FTP是实时联机服务,在使用它之前必须是具有该服务的一个用户(用户名和口令),工作时客户端必须先登陆到作为服务器一方的计算机上,用户登陆后可以进行文件搜索和文件传送等有关操作,如改变当前工作目录、列文件目录、设置传输参数及传送文件等。

使用FTP可以传送所有类型的文件.FTP服务器的使用十分广泛,在网络上随处可见到FTP服务器。

主要用于存放文件,让网络中的计算机可以共享这些文件。

因此,FTP服务器要有很大的存贮空间,免费的FTP空间总是有限的,所以我们想,能不能将FTP服务器建在自己的计算机上呢?

随着网络技术的不断成熟,宽带业务的不断推进,我们用动态IP将Web主机、FTP服务器和MAIL服务器搬回家,已经不再是梦想.通常服务器端是远程端点,用户可以通过Internet网络连接到远程的FTP服务器站点.

在设计程序之前,我们首先要进行一个重要的步骤—需求分析。

所谓需求分析,就是分析软件用户的需求是什么。

如果投入大量的人力,物力,财力,时间,开发出的软件却没人要,那所有的投入都是徒劳。

如果费了很大的精力,开发一个软件,最后却不满足用户的要求,从而要重新开发过,这种返工是让人痛心疾首的。

而我们现在就很明确的知道,我们的程序是用来进行局域网文件传输的,知道了这一点,我们的程序至不会全部返工,因为我们已经知道我们软件所要完成的功能是什么。

明确了程序的功能我们要进一步的分析.

4.2应解决的问题

选择好开发工具,设想好程序将要实现的大体功能后,我们就要分析该程序所需的条件,对该程序中将要遇到的问题做一下准备工作,以便于以后设计的顺利进行。

根据我们想要在局域网内进行文件传输的要求,首先,要选择在局域网内通讯;其次,因为本程序要实现的是FTP服务器功能,所以我们要建立服务器但是为了测试服务器是否能够有效运行,我又配置了一个客户端。

4.3功能分析

在做程序之前,我们要先确定本程序的功能,只有确定了功能,才能确定程序中使用什么函数来实现。

如果想在局域网内进行文件传输,首先要有服务器和客户端,两者配合使用。

先打开客户端和服务器,然后让客户登陆一下服务器,服务器端设制一下服务器所完成的功能,然后客户端在向服务器发送请求.

第五章ﻩ系统设计与实现

5。

1功能要求

本程序是一个在局域网内实现的小型FTP文件传输.主要实现的是FTP服务器端功能,包括:

FTP服务日志,在线用户的管理,统计客户端信息还有客户端上传、下载、选择数据传输模式、改变目录等,并给出相应提示。

5。

2开发工具

本系统的实现采用的工具为VisualC++6.0.开发平台为Windows2000,WindowsXP。

程序界面主要包括服务器日志、在线用户。

统计信息、安全管理、菜单栏.工具栏、状态栏。

如图所示.

服务器用户界面

5.3主要功能与实现

用CSocket类编制的服务器端的程序,其过程如下,其过程主要是:

1)创建CSocket对象.

2)创建底层套接字Socket.

3)调用Listen,开始监听从客户发来的访问请求。

4)如果收到请求,调用CAsyncSocket:

Accept()函数进行接收处理.

5)建立CSocketFile对象,并且使该对象与CSocket对象具备一定得联系。

6)建立Carchive对象,以便实现卸装(接收)数据和存储(发送)数据的目的地址。

当然,该Carchive对象应该与前面的CSocket对象建立联系。

7)使用Carchive对象在客户和服务器Socket之间传递数据,从而实现服务器Socket和客户机Socket之间的通信.值得注意的是,一个给定的Carchive对象只能在单一的方向上传递数据:

或者接受,或者发送。

一般情况下,可能需要两个Carchive对象来实现数据的双向传递.

5。

4菜单栏功能模块

菜单栏包括:

服务器,查看。

服务器菜单包括:

开始,停止,用户账户向导,用户账户功能,

查看菜单包括:

服务器日志,在线用户,配置,统计,安全等功能。

各项功能实现如下:

服务器功能:

1.账户向导:

当你登录服务器时你需要一个有效的账户,用户账户向导将引导您通过必要的步骤,创造一个新的用户账户。

并将其添加到用户账户对话框,创建用户名,如图所示.

用户账户向导窗口

通过这个窗口你可以创建自己的用户名以及密码用户用以登录FTP服务器,该部分功能实现代码如下:

  

CWizardPage1:

CWizardPage1():

 CPropertyPageEx(CWizardPage1:

:

IDD, 0,

IDS_HEADERTITLE1,NULL)

  {

    m_strAccountName=_T(''’’);

 m_psp.dwFlags &=~PSP_HASHELP;

}

    CWizardPage1:

~CWizardPage1()

   {

   }

  voidCWizardPage1:

:

DoDataExchange(CDataExchange*pDX)

     {

     CPropertyPageEx:

DODataExchange(pDX);

  DDX_Text(pDX,IDC_ACCOUNTNAME,  m_steAccountName);

  }

  BEGIN_MESSAGE_MAP(CWizardPage1,CPropertyPageEx)

    END_MESSAGE_MAP()

2.用户帐户功能:

这一功能主要是服务器端添加,修改和删除用户帐户,设置目录权限(使用添加按钮以添加一个新目录,其中选定的用户帐户已具有访问权限,每小组目录您可以设定不同的权限,例如你可以给所有权限到C:

 \下载,但限制的权限为C:

\下载\申请时,没有权限指定的目录,在这个目录中它会自动阻止用户要求上传任何子目录).目录属性,当您添加的编辑目录的用户帐户,目录属性对话框将显示物理目录(物理目录是真正的路径文件夹的名称)。

虚拟目录(虚拟目录是一个物理文件夹的别名,当用户连接到您的FTP服务器,它将看到这个目录而不是真正的物理目录名称)。

设置服务器端允许客户端的权限,例如允许客户端可以下载,上传,重命名哪些服务器端的文件内容。

例如用户123将:

E:

盘设为许可目录,客户端就可以随时下载,上传E:

\盘里面的内容,如图所示

用户账户窗口

这一功能实现,代码如下

VoidCUserAccountsDlg:

OnDblclkDirlist(NMHDR*pNMHDR,LRESULT*pResult)

OnEditDir();

*pResult=0;

5.5 查看功能模块

1.服务器日志模块的功能:

在此屏幕,记录客户端与服务器端的连接信息以及传输信息,当客户端登录服务器时服务器日志会显示是否与服务器连接成功,当客户端要上传文件或是下载文件成功时会记录服务器和FTP客户端的详细资料,从而有助于您追踪服务器与客户端之间的所有的通讯讯息,数目之间的方括号[]是线程ID,如图所示。

该部分功能实现代码如下:

FriendCLogFile&setlevel(CLogFile&os,intlevel)

{

m_nCurrentLevel=level;

returnos;

friend CLogFile&error_lvl(CLogFile&os)

os。

m_nCurrentLevel=1;

return os;

}

friendCLogFile& warning_lvl(CLogFile&os)

{os.m_nCurrentLevel=2;

returnos;

friendCLogFile&trace_lv(CLogFile& os)

{

os。

m_nCurrentlevel=3;

returnos;

}

服务器日志窗口

2.在线用户模块的功能:

通过服务器来查看在线客户端的用户名,用户IP地址,用户登录时间等信息,如图所示。

在线用户窗口

该模块功能实现代码如下:

class COnlineUserPage:

publicCDialog

{DECLARE_DYNCREATE(COnlineUsersPage)

public:

void RemoveUser(DWORDnThreadID);

voidAddUser(DWORD nThreadID,LPCTSTRlpszName,LPCTSTRlpszAddress);

COnlineUsersPage();

~COnlineUserPage();

enum{IDD = IDD_PROPPAGE_ONLINE};

CListCtrl m_OnlineUsers;

protected:

virtualvoid DoDataExchange(CDataExchange*pDX);  //DDX/DDV suport

protected:

afx_msgvoidOnSize(UINTnType, int cx,  intcy);

virtualBOOLOnInitDialog();

afx_msgvoidOnContextMenu(CWnd*pWnd, CPointpoint);

afx_msg voidOnKickUser();

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

当前位置:首页 > 教学研究 > 教学案例设计

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

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