FTP服务器的设计与实现.doc_第1页
FTP服务器的设计与实现.doc_第2页
FTP服务器的设计与实现.doc_第3页
FTP服务器的设计与实现.doc_第4页
FTP服务器的设计与实现.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

本科生毕业设计(论文) 学院(系): 软件学院 专 业: 软件工程 学 生: 指导教师: 完成日期 20 年 4 月 学院本科生毕业设计(论文) ftp服务器的设计与实现 the design and implementation of ftp server 总 计: 24 页 表 格: 0 个 插 图: 9 幅 理理 工工 学学 院院 本本 科科 毕毕 业业 设设 计(论文)计(论文) ftpftp 服务器的设计与实现服务器的设计与实现 the design and implementation of ftp server 学 院(系): 软件学院 专 业: 软件工程 学 生 姓 名: 学 号: 指 导 教 师(职称): (教授 ) 评 阅 教 师: 完 成 日 期: 年 4 月 ftp 服务器的设计与实现 ftp服务器的设计与实现 软件工程专业 摘摘 要要有了网络,使用者可以浏览各种各样的信息资源,还能够将自己感兴趣的资源下载到 本地机上。由于网络的带宽及各种服务的限制,所以就有许多ftp工具提供出来。本软件是用visual studio 2005作为开发工具完成的,系统有着简单的界面,系统开发的总体任务是建立ftp服务器, 提供文件的上传/下载、对ftp服务器目录的变更等。软件的设计,即从需求分析,软件设计到软件 功能实现,都始终遵循软件工程的思想和数据库的设计方法。 关键词关键词 ftp;ftp服务器;.net;c# the design and implementation of ftp server software engineering major wang cong abstract: with the network, users can browse a wide variety of information resources, and also be able to download the resources of interest to the local machine. as the network bandwidth and limited range of services, there are so many ftp tools were worked out. this software was completed by the development tool visual studio 2005, the system has a simple interface, the overall task of systems development is to create a ftp server to provide upload and download the files, change the ftp servers file directory and so on. from requirements analysis to software implementation of function, the software design have always followed the idea of software engineering and database design methods. key words: ftp; ftp server;. net; c # ftp 服务器的设计与实现 目 录 1 前言.1 1.1 课题背景 .1 1.2 网络基本概念 .1 1.3 网络概述 .1 2 c#及相关技术简介.2 2.1 c#简介 .2 2.2 ftp 协议简介.2 2.2.1 什么是 ftp 协议 .2 2.2.2 ftp 文件传输的原理以及主要特点.3 2.2.3 ftp 的两种传输方式.3 2.3ftp 的工作原理 .5 2.4 通过 ftp 传输文件的一般步骤 .5 2.5 客户机/服务器模式 .6 2.5.1 什么是客户机/服务器 .6 2.5.2 如何采用客户机/服务器模式 .7 3 系统分析.7 3.1 系统可行性分析 .7 3.1.1 技术可行性 .7 3.1.2 经济可行性 .7 3.1.3 操作可行性 .7 3.2 需求分析 .8 3.2.1 系统需求分析 .8 3.2.2 系统特点 .8 3.2.3 系统运行环境 .9 3.3 系统功能分析 .9 4 ftp 服务器的设计与应用 .10 4.1 ftp 服务器界面设计.10 4.2 系统主要功能流程图 .10 4.3 系统主要功能实现 .15 4.3.1 文件目录选择功能的实现 .15 4.3.2 ftp 服务启动停止功能的设计与实现.16 5软件功能测试 .17 5.1 服务器目录选择功能 .17 5.2 服务器启动/停止功能 .18 5.3 文件上传/下载功能 .19 结束语.22 参考文献.23 致谢.24 ftp 服务器的设计与实现 1 1 前言 1.1 课题背景 计算机网络的出现是 20 世纪最伟大的科学技术成就之一,而计算机网络的发展速 度又超过了世界上任何一种其他科学技术的发展速度。 早在 20 世纪 90 年代初,internet 和 world wide web(简称 www)已经被大家熟知。 最近几年,internet 的发展更是神速,它已经深深触及到我们的生活和工作的方方面 面。 然而现实生活中,人们对共享信息的要求越来越迫切,无论是硝烟弥漫的战场, 充满商机的公司,政府机构,制造工厂科研院所和大专院校,人们都迫切希望能够打 破时间和空间的限制,自由的交互和共享信息。计算机网络的出现正好为人们提供了 打破时空限制的工具。 随着网络、通信技术的相结合,已经出现了可视电话、网络家电、电子商务等。 网络用户可以通过大大小小的各类网站或主页。他们已经越来越离不开网络,而且已 经把企业网络建设纳入了未来企业发展最重要的环节。是互联网最大的凝聚力所在, 它是一个包罗万象的信息服务系统。 1.2 网络基本概念 互联网通常指的是由很多计算机网络(包括局域网、广域网等)相互连接而成的 一个总网络,它无论在功能上还是在逻辑上都是一个巨型网络。 计算机网络形成与发展大致分为 4 个阶段, 第一个阶段为面向终端的计算机通信 网络;第二个阶段为初级计算机网络;第三个阶段从 20 世纪 70 年代中期开始的开放 式标准化计算机网络; 第四个阶段是新一代的计算机综合性,智能化,宽带高速网络。 无论 internet、因特网、国际互联网、互联网、全球互联网、交互网、国际电脑 网络、国际计算机网络。其实它们都是由美国阿帕网(arpanet)发展而成的。主要采 用的通信协议都是 tcp/ip 协议。 internet 也就是网络中心的网络。那下面就介绍一下网络以及网络与 internet 的 关系。 1.3 网络概述 网络的定义从概念上说,就是由两台或两台以上计算机通过一定的连接和统一的 通信协议,最终实现彼此之间相互通信的实体。网络互联可以采用网间连接器互连和 ftp 服务器的设计与实现 2 通过互联网两种方式实现网络互联。从定义看,它必须是由多个电脑通过连接设备物 理连接而成,然后通过定制的协议方法才能实现多种资源、服务、信息共享。这种通 信包括了发送 e-mail 和传真,交换一个或多个文件等。而 internet 是多个计算机网 络的集合,是一个网中网,是遍布全球的联络各个计算机平台的总连接,这些网中网 的计算机少则两三台,多的则拥有数千台,是名副其实的千万信息资源的汇合。 从本质上讲,internet 是一个媒介,是一个沟通你我他,沟通全世界的重要手段, 只不过这种沟通连接世界上不同种类型的计算机实现的,通过这种连接,我们就能和 世界交流,和世界通信,所以它又是一个交换各类数据的通信媒介。从 internet 提供 的无限资源和对人类的发展推动作用这方面来理解,internet 是正在迅猛发展的全球 数字化数据库,这个数据库是建立在高度灵活的通信技术之上的,正是有了各种成熟 的通信技术和网络连接的简单性、灵活性和共享信息的便利性才促成了 internet 的飞 速发展。 2 c#及相关技术简介 2.1 c#简介 本系统采用 microsoft visual studio 2005 作为开发工具。作为.net 的开发基础, microsoft visual studio .net 集.net 的平台搭建、开发、调试、编译和参考于一体, 是一套完整的开发工具。目前的版本是 microsoft visual studio 2005,该开发平台 能在 windows .net 环境下的应用程序开发中大显身手,其主要有以下几个优点: 1、.net 平台安装的综合化。在安装 microsoft visual studio 2005 时,首先会 对系统进行检测,如果还没有安装上一节的项目,microsoft visual studio 2005 的 安装程序会提示自动安装上面的项目,这就省去你搭建.net 开发平台的辛苦。 2、功能强大的开发、调试和编译功能。microsoft visual studio 2005 安装完 后就可以作为.net 的开发工具了。工具集开发、调试和编译功能于一体。 3、全面、系统的参考资料。在 microsoft visual studio 2005 安装完成后,会 有一个 microsoft visual studio 2005 文档文件,该文件里包含了很多.net 开发的参 考资料,几乎包含了整个 msdn 上的参考资料,这对开发人员来说是个十分珍贵的宝库。 1 2.2 ftp 协议简介 2.2.1 什么是 ftp 协议 ftp 协议即文件传输协议(file transfer protocol) ,它是 tcp/ip 协议族的应用 ftp 服务器的设计与实现 3 协议之一,是一项允许用户在 internet 的一台主机和另一台主机之间进行发送和接收 文件,是 internet 上使用非常广泛的一种通信协议。它是由支持 internet 文件传输 的各种规则所组成的集合,这些规则使 internet 用户可以把文件从一个主机拷贝到别 一个主机上。通过 tcp/ip 连接在一起的任何两台计算机,如果安装了 ftp 和服务器, 就可以通过 ftp 服务进行相互之间的文件传输,因而为用户提供了极大的方便和收益。 ftp 通常也表示用户执行这个协议所使用的应用程序。 ftp 和其他的 internet 服务一样,亦采用客户机/服务器方式。它要求用户用本地 的客户端与服务器建立连接,然后才能从服务器上获取文件(download) ,或向服务器 发送文件(upload) 。使用方法很简单;启动 ftp 程序先与主机连接,然后向远程主机 发出传输命令,远程主机给予响应,执行正确命令。 目前 windows 操作系统最常用的 ftp 软件有 ws-ftp,cuteftpt 等。ftp 有一个根本 的限制,那就是:如果用户未被某一服务器授权,未取得 user name 和 password 就不 能访问该主机,实际上是不能远程登陆(remote login)进入该主机。而 anonymous ftp(匿名 ftp)则取消了这种限制。 ftp 的命令格式为 ftp-v-d-i-n 其中:-v 表示禁止显示远程服务的所有响应信息; -n 表示限制 ftp 的自动登陆;-i 表示在多文件传输时,关闭提示;-dzu 表示使用调试 方式。 2.2.2 ftp 文件传输的原理以及主要特点 ftp 包含了两个通道,一个叫控制通道,一个叫数据通道。控制通道是和 ftp 服务 器进行沟通的通道,连接 ftp,发送 ftp 指令都是通过控制通道来完成的。数据通道是 和 ftp 服务器进行文件传输或者列表的通道。举个例子,当我们用 ftp 客户端比如 ftppush 下载 ftp 上的文件的时候,通常会加入好几个目录和文件到队列窗口,那么当 下载开始的时候,队列里面的第二个文件怎么知道该被传输呢?这就是控制通道的用 处了,当下载文件的时候,ftp 客户端会 等待 ftp 服务器返回指令,这个指令就是通 过控制通道来完成的,当数据通道的传输完成以后,ftp 客户端就会接收到来自控制通 道的指令,这样 ftp 客户端就可以知道这个文件已经传输完成或者失败,进行下一个 传输了。用户有合法的用户名和口令的前提下才与服务器建立连接。通过客户端软件, 用户可以在权限允许的范围内进行文件更名、删除、或传送操作。 2.2.3 ftp 的两种传输方式 1ascii 传输方式:假定用户正在拷贝的文件包含的简单 ascii 码文本,如果在 远程机器上运行的不是 unix,当文件传输时 ftp 通常会自动地调整文件的内容以便于 把文件解释成另外那台计算机存储文本文件的格式。 但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序, ftp 服务器的设计与实现 4 数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包 含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用 binary 命令告诉 ftp 逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制 传输。 2二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐 位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,mac 机以二进 制方式传送可执行文件到 windows 系统,在对方系统上,此文件不能执行。 如果你在 ascii 方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍 微变慢 ,也会损坏数据,使文件变得不能用。(在大多数计算机上,ascii 方式一般 假设每一字符的第一有效位无意义,因为 ascii 字符组合不使用它。如果你传输二进 制文件,所有的位都是重要的)如果你知道这两台机器是同样的,则二进制方式对文 本文件和数据文件都是有效的。 2.2.4 ftp 的工作方式 ftp 支持两种模式,一种方式叫做 standard (也就是 port 方式,主动方式),一 种是 passive (也就是 pasv,被动方式)。 standard 模式 ftp 的客户端发送 port 命 令到 ftp 服务器。passive 模式 ftp 的客户端发送 pasv 命令到 ftp server。 port 模式 ftp 客户端首先和 ftp 服务器的 tcp 21 端口建立连接,通过这个通道发 送命令,客户端需要接收数据的时候在这个通道上发送 port 命令。 port 命令包含了 客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的 tcp 20 端口连 接至客户端的指定端口发送数据。 ftp 服务器必须和客户端建立一个新的连接用来传 送数据。 passive 模式在建立控制通道的时候和 standard 模式类似,但建立连接后发送的 不是 port 命令,而是 pasv 命令。ftp 服务器收到 pasv 命令后,随机打开一个高端端 口(端口号大于 1024)并且通知客户端在这个端口上传送数据的请求,客户端连接 ftp 服务器此端口,然后 ftp 服务器将通过这个端口进行数据的传送,这个时候 ftp 服务器不再需要建立一个新的和客户端之间的连接。 很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火 墙后或内网的 ftp 服务器不支持 pasv 模式,因为客户端无法穿过防火墙打开 ftp 服务 器的高端端口;而许多内网的客户端不能用 port 模式登陆 ftp 服务器,因为从服务器 的 tcp 20 无法和内部网络的客户端建立一个新的连接,造成无法工作。 6 ftp 服务器的设计与实现 5 2.3ftp 的工作原理 图 2-1 ftp 工作原理 (1)ftp 服务器运行 ftpd 守护进程,等待用户的 ftp 请求。 (2)用户运行 ftp 命令,请求 ftp 服务器为其服务。 (3)ftpd 守护进程收到用户的 ftp 请求后,派生出子进程 ftp 与用户进程 ftp 交互, 建立文件传输控制连接,使用 tcp 端口 21。 (4)用户输入 ftp 子命令,服务器接收子命令,如果命令正确,双方各派生一个数据 传输进程 ftp-data,建立数据连接,使用 tcp 端口 20,进行数据传输。 (5)本次子命令的数据传输完,拆除数据连接,结束 ftp-data 进程。 (6)用户继续输入 ftp 子命令,重复(4) 、 (5)的过程,直至用户输入 quit 命令, 双方拆除控制连接,结束文件传输,结束 ftp 进程。5 2.4 通过 ftp 传输文件的一般步骤 需要进行远程文件传输的计算机必须安装和运行ftp 客户程序。在 windows 操 作系统的安装过程中,通常都安装了 tcp/ip 协议软件,其中就包含了 ftp 客户程 序。但是该程序是字符界面而不是图形界面,这就必须以命令提示符的方式进行操 作,很不方便。 启动 ftp 客户程序工作的另一途径是使用 ie 浏览器,用户只需要在 ie 地址栏 中输入如下格式的 url 地址:ftp:/用户名:口令ftp 服务器域名:端口号 ftp 服务器的设计与实现 6 (在 cmd 命令行下也可以用上述方法连接,通过 put 命令和 get 命令达到上传 和下载的目的,通过 ls 命令列出目录,除了上述方法外还可以在 cmd 下输入 ftp 回车,然后输入 open ip 来建立一个连接,此方法还适用于 linux 下连接 ftp 服务 器) 通过 ie 浏览器启动 ftp 的方法尽管可以使用,但是速度较慢,还会将密码暴露 在 ie 浏览器中而不安全。因此一般都安装并运行专门的ftp 客户程序。 1.在本地电脑上登陆到 internet。 2.搜索有文件共享主机或者个人电脑 (一般有专门的 ftp 服务器网站上公布的 , 上面有进入该主机或个人电脑的名称 ,口令和路径)。 3.当与远程主机或者对方的个人电脑建立连接后 ,用对方提供的用户名和口令 登陆到该主机或对方的个人电脑 。 4.在远程主机或对方的个人电脑登陆成功后 ,就可以上传你想跟别人分享的东 东或者下载别人授权共享的东东 (这里是指能放到电脑里去又能在显示屏上看到的 )。 5.完成工作后关闭 ftp 下载软件,切断连接.。 为了实现文件传输 ,用户还要运行专门的文件传输程序 ,比如网际快车就有这方 面的功能,其它还有很多专门的 ftp 传输软件,flashfxp 为其中的杰出软件。有兴趣 的网友可以试试其他的软件,如 leapftp 总归各有各的特色 。 2.5 客户机/服务器模式 2.5.1 什么是客户机/服务器 客户机/服务器并非是一种物理结构,也就是说,客户机、服务器并非一定是两 台计算机,它们也可能位于同一台计算机上,甚至客户机和服务器的地位可以互换, 某一时刻处于客户机地位的在另一时刻可能充当服务器的角色。所以客户机/服务器 的理解应是应用程序之间相互作用的一种模型。 客户机程序(进程)发送请求给服务器程序(进程) ,服务器进程对客户机的请 求做出响应,并产生结果。一般来说,服务器进程完成一些比较通用而特殊的处理, 如进行一些复杂的计算,大型数据库的查询等等。而客户机进程则由于将上述一些特 殊的应用交由服务器进程处理,因而可以专心于其它工作,如事务处理、人机交互等 等。显然,客户机/服务器模式下,客户机为主动方,即请求方;而服务器为被动方, 接受请求方。 网络环境是客户机/服务器模式的主要应用环境。计算机组网的目的是为了资源 共享,在网络中存在不同功能的设备,一般而言,作为服务器的计算机拥有比较丰富 ftp 服务器的设计与实现 7 的资源,如高速 cpu、大容量硬盘、高速打印机、大型数据库等等。而客户机一般拥 有相对比较少的资源,这时,客户机利用 tcp/ip 应用程序来访问服务器资源,而服 务器的 tcp/ip 应用程序则可以将客户机访问的结果回送给客户机。这就是基于客户 机/服务器结构的 tcp/ip 应用。 2.5.2 如何采用客户机/服务器模式 客户机一方,先打开通信信道(申请套接字) ,并连接到服务器在主机的保留端口, 该端口对应服务器的通信进程。然后向服务器发出请求报文,等待接收应答。再从服 务器方收到最终应答结果,或在不再请求时关闭信道并终止客户机进程。 服务器一方,先打开通信信道(申请套接字) ,通知本地主机在某一保留端口接收 客户机请求,然后等待客户机请求到达指定端口。接收到请求后,启动一新进程处理 用户机请求,同时释放旧进程以响应新的客户机请求,一旦服务完成,关闭新进程与 客户机的通信链路。接下来继续等待客户机请求。如果不想响应客户机请求,关闭服 务器进程。 3 系统分析 3.1 系统可行性分析 3.1.1 技术可行性 技术上的可行性要考虑将来要采用的硬件和软件技术能否满足用户提出的要求如 计算机的容量和速度等。此外还要考虑开发人员的水平,对这个管理模块应该比较熟 悉。对于使用 c#作为开发工具,使用 c/s 构架,拥有了强大的开发功能。组以实现应 用程序所需要实现的功能。 3.1.2 经济可行性 本系统所使用的 ftp 工具以及.net 平台都是网络上提供的工具,系统的维护只需 要管理员对信息进行简单的操作和处理,资本的投入需要极少。对用户而言,由于系 统立足于互联网,网民只需要连上互联网,就可以使用。 3.1.3 操作可行性 管理员和用户对系统进行的操作都是通过一个简单的界面进入系统,在可视化的 界面下对系统进行使用和维护。由于系统对信息的流向和出错都进行了人性化的处理。 只要具有普通上网能力的人都可以进行使用和维护。就操作性方面系统是可行的。 ftp 服务器的设计与实现 8 3.2 需求分析 3.2.1 系统需求分析 互联网的一大特点是实现信息共享,文件传输是信息共享的十分重要的内容之一。 ftp 是 internet 上最早也是最广的应用,直到今天它仍是最重要和最基本的应用之一。 用 ftp 将信息下载到本地是一件十分普遍的事。也随之出现了许多下载软件。尽管远 程登录提供了访问远程文件的极好方法,但怎么也比不上使用自己计算机中的文件方 便。假如用户想使用其它计算机上的文件,最理想的方法就是把它 copy 到自己的计算 机中,以便在本地计算机上操作。ftp 正是完成这项工作的工具,你可以在任意一个经 过文件传输协议访问的公共有效的联机数据库或文档中找到你想要的任何东西。全世 界现在已有 1000 多个 ftp 文件服务器对所有 internet 用户开使用,用户可以通过与 internet 相连到远程计算机,把自己需要的文件传输过来或是把自己的收集传输上去 与他人共享。传统的数据库应用系统采用的是客户机/服务器模式,有高度的交互性, 高效的用户界面等优点。 为了实现文件传输,随之出现了许多 ftp 服务器用来共享一些信息资源,编写一 个操作简单,方便的 ftp 客户端来下载这些资源受到了人们的极大欢迎,1971 年,第 一个 ftp 的 rfc 由 a.k.bhushan 在 1971 年提出,同时由 mit 与 harvard 实验实现; 1972 年,rfc172 提供了主机间文件传输的一个用户级协议;1973 年 2 月,在长期讨论 后,出现了一个官方文档 rfc454;1973 年 8 月,出现了一个修订后的新官方文档 rfc542,确立了 ftp 的功能、目标和基本模型。当时数据传输协议采用 ncp;1980 年, 由于底层协议从 ncp 改变为 tcp,rfc765 定义了采用 tcp 的 ftp;1985 年,一个作用 持续至今的官方文档 rfc959 出台。用 ftp 传输文件,本来用户事先应在远方系统注册, 但后来为了便于大家获取资源,ftp 在互联网上有一种非凡的也是非常广泛的应用是匿 名 ftp。通过 internet,任何用户可以使用 ftp 和一个公用账号去获得一些公用资源。 在 internet 上目前有许许多多的这种公用计算机,我们把这种用来做匿名 ftp 服务的 计算机称作 ftp 服务器,对每一个联入 internet 的用户,只要知道这些 ftp 服务器的 地址,就可以与它们连接并获取上面各种资源。由于 ftp 操作简单实用,开放性强, 且能充分利用 internet 来进行信息传递与交流,所以目前越来越多的 ftp 服务器连入 internet,这样越来越多的资源就可以通过匿名 ftp 来获得。基于此,我用 c#语言开 发出了 ftp 服务器,来实现网络文件传输管理功能。 3.2.2 系统特点 (1)实用性:尽量最大限度降低管理员管理工作量,提高效率,优化资源,实现效益 最大的化。 ftp 服务器的设计与实现 9 (2)操作简单:本系统应该适用于各层次的使用者,同时系统不应该太复杂,因此要 求系统的操作尽可能简单易行。 3.2.3 系统运行环境 为了保证系统运行的效果和可靠性,服务器端一般应具有较高的硬件配置,但此 程序是一个十分简单的微型应用程序,功能少而精,对于电脑硬件的要求并不高。此 应用程序可以广泛运行于国际互联网也可以适用与内部局域网。只需要安装.net framework 2.0 即可运行。 3.3 系统功能分析 系统开发的总体任务是建立一个 ftp 服务器,能够上传/下载文件、提供 ftp 服务、 允许远程登录下载服务器上的文件。 ftp 服务器软件一般具有启动服务、停止服务、端口设置、目录选择等功能。系统 开发是在系统分析的基础上完成的。此程序中的 ftp 服务器需要完成的功能主要有: ftp 连接 ftp 连接功能主要包括客户端与服务器的连接,通过用户名和密码的验证,连接后 可实现对服务器上文件的管理和其他功能的实现。 打开服务器程序界面,点击按钮“启动 ftp 服务”即可完成服务器的启动,并对指 定端口进行监听。此时,打开服务器程序界面,在“服务器 ip”一栏输入需要连接的 服务器的地址以及端口号,在“用户名”和“密码”中输入正确的用户名和密码,点 击登录,就能对相应的服务器进行连接。并在程序下方的文本框中显示连接的信息。 连接成功后,就可以实现其他功能的操作。 连接设置 连接设置功能主要是对端口的设置。 在服务器程序界面可以对端口进行设置,在端口一栏后输入正确范围内的端口号。 服务器启动时,就会对对应的端口进行监听。客户端也要输入正确的端口号才能对服 务器进行连接。 文件日志操作 文件日志操作功能是指对服务器的一些操作和连接信息进行记录,并保存在服器 的根目录。记录内容主要包括文件的上传记录和下载记录,以及连接时的一些信息。 服务器和客户端的连接信息、文件信息和数据传输的信息都会在程序界面下方的 文本框中显示出来,此功能主要对这些信息进行一个保存,方便在日后查看服务器的 一些操作记录。 连接数显示 ftp 服务器的设计与实现 10 连接数显示功能主要通过对当前已连接到服务器的用户进行统计,并显示在服务 器上。 通过对当前连接到服务器的客户端用户数目进行一个统计,并把统计的人数显示 在服务器端,方便查看当前服务器的负荷。 下载上传状态显示 下载上传状态显示功能主要是对当前正在下载和上传的文件的信息的获取,并显 示在程序端。 在程序下方的文本框中显示当前上传下载文件的信息,和传输的进度,方便用户 查看当前文件的传输状态。 本地文件夹及文件操作 通过客户端对服务器上的文件进行更改和删除。 客户端连接到服务器之后,可根据程序上相应的文件编辑按钮对文件进行操作, 例如文件名称的改变以及对文件的删除。 4 ftp 服务器的设计与应用 网上的各种网页的主页都是通过 ftp 客户工具更新的,这是因为主页所在的主机 提供了 ftp 服务。我们所使用的操作系统多是单机、桌面型操作系统比如 windows xp、windows 7 等。在调试 ftp 用户程序和远程文件传输时都不方便,这就急需有一个 属于自定制(ip 和端口)的文档传输服务程序。在很多骇客软件中都应用了 ftp 服务 器与木马隐身结合的技术,使身在远方的他们毫不费力的就操纵别人的计算机。本章 就针对 ftp 服务器制作的一些技术做些控讨。 4.1 ftp 服务器界面设计 窗体名称:ftp 服务器 窗体功能:实现各个模块及菜单的显示,是程序的主体。 4.2 系统主要功能流程图 ftp 服务器的设计与实现 11 图 4-1 服务器数据传输流程图 打开服务器程序,启动 ftp 服务,开始监听端口,等待接收连接请求。打开客户 端程序,在客户端输入要进行连接的服务器密码和端口号,用户名以及密码,开始向 服务器发送连接请求。当客户端输入对应的 ip 地址和正确的端口号后,服务器开始验 证连接服务器端的用户名和密码,如果用户名和密码不存在或者错误,则返回错误的 信息,等待客户端发送下一次请求。如果用户名和密码正确,服务器开始连接客户端, 并返回信息,此时客户端与服务器成功连接。 接下来客户端用户开始进行必要的操作,向服务器发送相应的操作命令。服务器 接收命令后执行相关的操作,并对相应的文件进行信息的传输。此时如果为上传文件, 客户端可选择对应的文件将数据发送至服务器,如果为下载的操作,服务器搜索对应 ftp 服务器的设计与实现 12 的文件将数据发送至客户端。文件发送结束后,服务器等待客户端继续发送命令。当 操作结束后,关闭服务器和客户端,连接结束。 图 4-2 文件列表获取流程图 当服务器执行 list 指令之后,首先判断客户端所选择的目录是否为根目录,如果 是根目录,则建立数据连接,通过存储设备上的文件生成对应的信息,并通 过数据传 输将信息发送至客户端。如果不是根目录,首先与客户端建立数据连接,根据选择的 文件夹名称和存储器上的映射信息判断文件位置并读取文件信息。接下来读取缓存中 文件的数目值,得到列表的长度,并生成对应的文件目录。然后通过数据端口将列表 回送至客户端,同时在内存中保留文件列表。此时客户端成功获取到服务器的文件目 录,关闭数据接收,并通过命令回送信息,传输结束。 ftp 服务器的设计与实现 13 图 4-3 文件下载数据流程图 当服务器执行 retr 指令之后,首先与客户端建立连接,然后根据客户端发送的信 息获取需要下载的文件信息和文件名称,接下来在内存中搜索对应的文件。如果没有 找到正确的文件,则向客户端发送错误信息,传输完成后关闭数据传输,返回连接状 态,等待发送下次命令。如果找到正确的文件,则打开传输通道,并向对应的存储器 发送下载命令。接下来判断文件是否传输完成,如果下载完成,则向客户端发送信息, ftp 服务器的设计与实现 14 传输完成,同时关闭传输,返回连接状态,等待发送下次命令。如果下载未完成,则 开启下一次接收,直至文件下载完成。 图 4-4 文件上传数据流程图 当服务器执行 stor 命令之后, 首先与客户端建立连接,然后根据客户端发送的 信息获取需要上传的文件信息和文件名称,并在内存中保存需要上传的文件。接下来 获取上传文件所要保存的目录,并开始上传命令。然后判断文件是否正常,如果没有 找到正确的文件,则向客户端发送失败信息,传输完成后关闭数据传输,返回连接状 态,等待发送下次命令。如果文件正常则打开传输通道,并向对应的存储器发送上传 ftp 服务器的设计与实现 15 命令。接下来判断文件是否传输完成,如果上传完成,则向服务器发送信息,传输完 成,同时关闭传输,返回连接状态,等待发送下次命令。如果上传未完成,则开启下 一次接收,直至文件上传完成。 4.3 系统主要功能实现 4.3.1 文件目录选择功能的实现 用户可以选择客户端可见的文件目录 private void button1_click(object sender, eventargs e) folderbrowserdialog folderbrowserdialog1 = new folderbrowserdialog(); folderbrowserdialog1.rootfolder = environment.specialfolder.mycomputer; folderbrowserdialog1.shownewfolderbutton = true;/显示“新建文 件夹”按钮 folderbrowserdialog1.rootfolder = environment.specialfolder.mycomputer;/只能看到“我的文档” dialogresult result = folderbrowserdialog1.showdialog();/指定 标示符,对话框的返回值 if (result = dialogresult.ok) textbox1.text = folderbrowserdialog1.selectedpath;/得到你 选择的路径 treeview1.nodes.clear(); system.io.directoryinfo difo = new directoryinfo(textbox1.text.trim(); string name = difo.name; treenode root = new treenode(difo.name, 0, 0); getchild(difo, root); root.tag = null; treeview1.nodes.add(root); treeview1.selectednode = root; ftp 服务器的设计与实现 16 4.3.2 ftp 服务启动停止功能的设计与实现 监听端口,处理客户端连接 private void listenclientconnect() 处理user命令,但不进行用户名验证 private void commanduser(user user, string command, string param) 处理密码命令,验证用户名和密码 private void commandpassword(user user, string command, string param) 处理cwd命令,改变工作目录 private void commandcwd(user user, string temp) 处理pwd命令,显示工作目录 private void commandpwd(user user) 处理pasv命令,设置数据传输模式 private void commandpasv(user user) 处理port命令,使用主动模式进行传输,获取客户端发过来的数据连接ip及端口信息 private void commandport(user user, string portstring) 处理list命令,向客户端发送当前或指定工作目录下的所有文件名和子目录名 private void commandlist(user user, string parameter) 处理retr命令,提供下载功能,将用户请求的文件发送给用户 private void commandretr(user user, string filename) 处理stor命令,提供上传功能,接收用户上传的文件 private void commandstor(user user, string filename) 处理type命令,设置数据传输方式 private void commandtype(user user, string param) 处理客户端用户请求 private void userprocessing(object obj) 初始化数据连接 private void initdatasession(user user) 使用数据连接发送字符串数据 private void sendbyusersession(user user, string sendstring) 使用数据连接接受文件流 private void readfilebyusersession(user user, f

温馨提示

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

评论

0/150

提交评论