基于ftp的服务器及客户端的设计与实现论文内容摘要:
ile]:显示远程主机目录,并将结果存入本地文件 localfile。 :同 close。 format:将文件传输方式设置为 format,缺省为 file 方式。 remotefile[localfile]:将远程主机的文件 remotefile 传至本地硬盘的 localfile。 :设置 mdelete, mget, mput 的文件名扩展,缺省时 不扩展文件名, :每传输 1024 字节,显示一个 hash 符号 ()。 [cmd]:显示 ftp 内部命令 cmd 的帮助信息,如: help get。 [seconds]:将远程服务器的休眠计时器设为 [seconds]秒。 :设置二进制传输方式 (同 binary)。 [dir]:将本地工作目录切换至 dir。 [remotedir][localfile]:显示远程目录 remotedir,并存入本地文件 localfile。 macroname:定义一个宏,遇到 macdef 下的空行时,宏定义结束。 [remotefile]:删除远程主机文件。 remotefiles localfile:与 dir 类似,但可指定多个远程文件, 8 remotefiles:传输多个远程文件。 dirname:在远程主机中建一目录。 remotefile localfile:同 nlist,但可指定多个文件名。 [modename]:将文件传输方式设置为 modename,缺省为 stream 方式。 filename:显示远程主机文件的最后修改时间。 localfile:将多个文件传输至远程主机。 以上为 FTP 协议中规定的所有 FTP 命令,但是 不同的 FTP 服务器对 FTP 命令的支持程度可能不同, 如 WINDOWS 和 LINUX 不同系统的命令格式和操作都有差异,而且协议中的很多命令由于安全和执行效率等因素已经不被现有的服务器和客户端所使用 TCP 标准定义 在 FTP 协议的基础上,定义了一个 所有 FTP 服务器都必须实现的命令 集 ,我们的目标就是构建一个实现这个最小命令集的 FTP 服务器 ,以实现 FTP 文件管理和传输。 在 FTP 协议中规定: 每个命令必须有最少一个响应。 本章小结 本章主要介绍了 FTP 协议以及 FTP 标准命令。 9 第 3 章 需求分析 任务描述 根据 FTP 协议规定,使用 JAVA 语言编程,以软件工程的开发方式实现 FTP 服务器端以及客户端的基本功能。 FTP 服务器 程序,其加强的文件传输系统能够完全满足今天的用户的应用需求。 本软件主要包括服务器端 和客户端两个部分。 在服务器端,服务器将会对登陆的普通用户进行上传和下载文件的相关服务,并且自带了用户登陆判断功能,对于使用不正确的账号和密码的用户将无法正常登陆该服务器。 该服务器还具备用户管理功能,可以对用户进行添加删除功能。 并设置用户工作目录,使得登陆的用户无法访问到不属于自己工作目录下的其他目录。 增加了服务器的安全性。 FTP 客户端给普通同用户提供一个与服务器端进行通信的操作界面,普通用户可以在输入正确的账号、密码、服务器 IP 和服务器端口号后对服务器进行访问,主要包括文件上传,文件下载,目录访问等功能。 通过对此课题的研究能够使我更加熟悉 FTP的工作方式 ,更加了解 FTP协议以及 TCP/IP 协议。 更熟练的应用 java,为以后我从事网络工作打下一个坚实的基础。 用户特点 系统应该围绕着用户特点设计,服务器管理员,可以通过界面对服务器进行打开和关闭,并且可以对普通用户进行添加,可以设置普通用户的登陆账号、密码以及工作目录。 对于那些对 FTP 服务器有危害的普通用户可以通过删除用户的方式删除该用户的账号和密码,使该用户无法正常登陆。 普通用户必须通过有效的账号名和密码用 FTP 客户端对服务器进行访问,在访问 期间,可以进行文件的上传,文件的下载,访问目录等功能。 访问服务器完毕后可以通过断开连接的方式,结束于服务器间的通信。 软件架构 服务器架构设计 对于稍微复杂一点或特别复杂的系统,不使用分层架构是很难想象的。 三层架构是目前使用较多的架构之一,其 3 层主要包括数据访问层、业务逻辑层、界 10 面层( UI) 3 个部分。 普通我们所说的三层架构既是将程序划分为数据访问层、业务逻辑层、界面层( UI)。 该服务器也考虑使用这种架构。 UI 层 主要提供用户界面,方便用户对服务器进行基本的操作,如打开和关闭服务器,并且提 供方便的接口用以添加和删除用户等操作。 逻辑处理 层 主要用于处理 FTP 命令,属于系统的核心部分。 数据 访问 层处理 主要用于处理数据、与客户端的通信以及文件的相关操作,包括文件的上传下载的数据的处理、与客户端的通信,用户的添加、删除等。 客户端架构设计 客户端虽然不存在用户的添加和删除的功能,但是同样要处理文件的上传和下载等功能,以及服务器的连接的功能,因此,这些也都应该放在数据访问层里,所以该客户端也考虑用 3 层架构: UI 层 主要提供用户界面,方便用户对客户端进行操作,如连接服务器,上传下载的使用界面 ,查看服务器目录等功能。 逻辑处理 层 主要用于处理客户端的命令,根据用户在 UI 层所输入的命令进行操作。 数据 访问 层处理 主要用于处理数据、与服务器的通信,以及文件的相关操作,包括文件的上传下载的数据的处理等。 服 务 器 U I 层 客 户 端 U I 层服 务 器 逻 辑 层 客 户 端 逻 辑 层服 务 器 数 据 访 问 层 客 户 端 数 据 访 问 层f t p 命 令返 回 信 息图 31 3 层架构图 11 开发环境 1.硬件 硬件环境 (用户 ):该软件对资源的消耗不会太大,对配置的要求不高。 硬件环境 (开发者 ): Intel Celeron(R)处理器, 512M 内存, 60G 磁盘空间。 2.软件 操作系统: Windows2020/NT/XP。 编写语言: Java。 运行环境: 安装 支持 Java 运行。 工具: Eclipse。 本章小结 本章主要介绍了 FTP 服务器的需求分析,用户的特点,软件的架构和开发环境。 12 第 4 章 系统设计 模块设计 按照面向对象的方法 ,根据需求分析的结果 ,该系统分为 FTP 服务器模块和FTP 客户端模块。 FTP 服务器模块 1. 服务器控制模块 :主要用于对服务器进行控制 (如打开或关闭服务器等 ),监视服务器状态 (如监视是否有远程客户 登录 ). 2. 数据传输模块 :主要用于设置传输模式 ,传输格式 .该模块可以通过调用文件处理模块来实现文件的上传和下载功能。 3.命令信道模块:主要用于管理与客户端的连接与 FTP 命令的处理。 4.文件处理模块:主要用于处理文件的读取和处理,将会被数据传输模块和用户相关模块调用,分别实现文件的上传下载,用户的添加删除以及用户登录功能的相关数据读取。 5.用户相关模块:主要用于实现用户管理。 该模块配合文件处理模块将实现用户登录判断,以及用户管理功能。 划分如下图所示 : F T P 服 务 器服务器控制模块数据传输模块命令信道模块文件处理模块用户相关模块 图 41 FTP 服务器模块设计图 13 FTP 客户端模块 1.信息处理模块:主要用于处理从服务器的返还信息和从客户端用户发送的操作命令。 2.文件传输模块:主要用于处理文件上的读取和存储,可以通过该模块来实现文件的上传和下载。 3.网络链接模块:主要用于处理与服务器间的通信。 如下图所示 : F T P 客 户 端命令传输模块文件传输模块用户操作模块 图 42 FTP 客户端模块设计图 FTP 服务器模块的设计 服务器控制模块 服务器控制模块包括 :FTPAdmin, FTPAdmin_Item_actionAdapter, FTPThread, FTPSEVER。 FTPAdmin: GUI(Graphic User Interface),即用户界面类。 文件的上传,下载以及列表的输出,用户的登陆等功能,全部是由客户端对服务器端发出的通信即 FTP 命令,在由服务器作出处理,在返还处理信息(包括文件目录、文件上传和下载的数据流等)。 所以只有用户的管理功能需要一个用户界面。 因此 ,对于在服务器界面上所需的控件相对较少,主要包括以下几个控件: 14 表 41 服务器端用户界面使用控件 控 件类型 控件描述 Jbutton 添加用户 Jbutton 更新用户列表 Jbutton 删除用户 List 显示用户列表 JTextField 输入添加用户名 JPasswordField 输入添加用户密码 JTextField 输入添加用户工作目录 JTextArea 用于返回服务器的相关信息 用户可以通过以上的控件来对用户管理功能进行控制,在文本框中输入用户名,密码和工作目录后点击添加用户即可添加用户信息。 同样的在列表中选中用户名称,点击删除用户,可以对用户进行删除。 需要用户输 入信息:添加的用户名,添加用户的密码,添加用户的工作目录,相应的点击事件。 FTPAdmin_Item_actionAdapter:对 GUI 界面上用户的触发事件进行分析,并且根据用户界面的命令调用其他的类,该类为服务器控制模块的核心,基本上管理员对服务器所有的操作均需要通过该类来进行处理,如打开和关闭服务器,添加或删除用户等。 表 42 FTPAdmin_Item_actionAdapter 类属性列表 属性类型 属性名称 属性描述 boolean isgreate 判断服务器是否已经建立 FTPSEVER: FTP 服务的监听线程类,该类为一个线程类。 当 FTPAdmin_Item _actionAdapter 判断出 UI 的命令为打开服务器事件时,创建该线程,即要启动服务器,可以将一个 ServerSocket 对象实例化。 一旦 ServerSocket 实例化了,就可以使用 accept 方法等连接,它将返回一个 Socket 对象。 该线程将会自动监听 21端口等待客户端访问,当 21 端口有远程客户端访问时将会创建 FTPThread 类,通过该类与客户端进行通讯。 FTPThread:同样也是一个线程类,当 FTPSEVER 类监听到 客户端访问时将会 15 将会创建该线程,该线程则会调用数据访问层的类进行与客户端的通信,并将客户端的信息发送给其他类作处理。 表 43 FTPThread 类属性列表 属性类型 属性名称 属性描述 String CommandString FTP 命令 String Cmd FTP 命令前缀 String Param FTP 命令后缀 String Message 返回信息 boolean quit 判断客户端是否退出 图 43 FTP 服务器连接控制时序图 16 FTP 的运行流程如下图所示: 进 入 服 务 器 页 面要 添 加 的 用 户 是否 已 经 存 在添 加 用 户 数据接 受 客 户 端 的请 求 信 息是 否 选 中 删 除的 用 户删 除 用 户n oy e sn oy s e点 击 打 开 服 务器显 示 服 务 器 已经 打 开选 择 想 要 删 除的 用 户点 击 删 除 用 户输 入 要 添 加 的用 户 名输 入 要 添 加 的用 户 工 作 目 录点 击 添 加 用 户输 入 要 添 加 的用 户 密 码显 示 已 经 存 在该 用 户显 示 添 加 用 户成 功点 击 关 闭 服 务器显 示 用 户 删 除成 功显 示 你 还 没 有选 择 要 删 除 的用 户图 44 服务器端控制流程图 17 数据传输模块 数据传输模块控制 FTP 的文件上传和下载,通过这个类可以控制文件的传输格式,主要分为 PASV 和 PORT 两种传输格式,包括 DateSocket, PortSocket,PasvSocket 几个类: DateSocket:数据通道接口,该接口主。基于ftp的服务器及客户端的设计与实现论文
相关推荐
piling)或链接程序。 ○ 3 面向对象 ( Object Oriented),并可扩展 ActiveX Server 组件功能。 ○ 4 存取数据库轻松容易(使用 ADO 组件)。 ○ 5 可使用任意语言编写自己的 ActiveX Server 组件。 ○ 6 无浏览器兼容问题。 11 ○ 7 程序代码隐蔽,在客户端仅可看到由 ASP 输出动态 HTML 文件。 (2)Access
星接收机是一个重要的发展方向.其中,不仅兼容 GPS、 GLONASS以及我国的北斗等多卫星系统接收机是一个重要方向,而且将 GPRS 网络定位和网络传输功能集成到卫星 接收机中也是一个重要发展趋势,具有 GSM/GPRS 网络定位和网络传输功能的接收机有如下优势:一定位范围扩大。 GPS 定位虽然能实现全球范围内的实时定位,但是对于城市车 辆 GPS 导航来说
过串行接口跟单片机进行通信。 TC35I GSM数据接口遵照ITUT RS232 DCE标准的串行异步收发器实现,ZIF上所有RS232信号都是低电平有效。 TC35I GSM数据接口配置为8个数据位、无奇偶校验、一个停止位,可以工作在300bps~115kbps()。 SIM卡接口TC35I GSM 基带处理器集成有与ISO 78163 IC卡标准兼容的SIM卡接口
程序设计 LIBRARY IEEE。 音乐节拍和音调发生器模块 USE。 USE。 ENTITY NoteTabs IS PORT ( clk : IN STD_LOGIC。 音乐节拍时钟 4HZ SEL : IN STD_LOGIC。 音乐选择键 基于 FPGA 音乐硬件演奏电路设计 8 RST : IN STD_LOGIC。 复位键 ToneIndex : OUT
程序设计 LIBRARY IEEE。 音乐节拍和音调发生器模块 USE。 USE。 ENTITY NoteTabs IS PORT ( clk : IN STD_LOGIC。 音乐节拍时钟 4HZ SEL : IN STD_LOGIC。 音乐选择键 基于 FPGA 音乐硬件演奏电路设计 8 RST : IN STD_LOGIC。 复位键 ToneIndex : OUT
begin if(distance[3:0]==9)//判断 distance的低四位计到了 9没有 begin distance[3:0]=439。 d0。 //计到 9清零 if(distance[7:4]==9) //判断 distance的高四位计到了 9没有 distance[7:4]=439。 d0。 //计到 9清零 else distance[7:4]= distance[7