4 FTP软件详细设计与实现
4.1软件总体分析与设计
根据需求分析,按照系统开发的基本观点对功能进行分解,从功能上可对模块作如下划分:
1.连接管理模块:主要完成主机与服务器之间的连接与关闭操作。
2.文件管理模块:主要完成文件的显示、新建文件、删除文件等。
3.文件传输模块:主要完成主机与服务器连接成功以后文件的上传与下载。
4.辅助功能模块:主要是保存一些登录信息和一些简单的配置信息。
4.2各模块具体设计
4.2.1 连接管理设计
该Ftp客户端工具用一个Winsocket连接上Ftp服务器,然后向其发送命令。在这个过程中,我们依靠发送——响应的机制。即发送Ftp命令——接收返回的响应信息——分析该信息——执行相关操作——发送下一条命令。在一般意义上,有一个socket用来连接Ftp服务器的相关端口(如默认的21),它负责Ftp命令的发送和接收返回的响应信息。一些操作如“进入目录”、“删除文件”,依靠这个socket发送一条命令就可完成了。
1.客户端与服务器连接
FTP是建立在TCP之上的连接,端口号使用21。若客户端与服务器之间成功连接,服务器将返回字符串,如:220 GMS (Version 5.0)。
前三个字符220表示客户端与服务器成功连接,后面的字符会因服务器的不同而不同,但我们只关心前三个字符。
2.用户名和密码认证
客户端发送用户名给服务器,如:USER he,如果服务器找到用户名he,将返回字符串,如:331 User name okay, needpassword。
接着客户端应发送密码给服务器,如:PASS 123,密码正确,返回如:230 User logged in, proceed,如果用户名或密码认证没有通过,返回如:530 Not logged in。
用户名也可以使用匿名,如:USER anonymous,返回如:331 Anonymous access allowed, send identity (e-mail name) aspassword。
4.2.1 文件管理设计
文件管理具有文件的主要是新建文件夹、删除文件,使用DirectoryInfo类的Delete()方法和CreateDirectory()方法来实现。文件属性的设置包括:是否只读、是否隐藏、是否归档,用File类和Directory类来完成对文件和文件夹的属性设置。
4.2.2 文件传输设计
FTP协议用两个连接来达到客户机与服务器之间交换数据的目的如图3。先建立第一个连接——控制连接,它用于传送命令和响应。在建立第二个连接——数据连接,用于数据传输。FTP提供了两种方式来建立数据连接,一种用PORT命令,一种用PASV命令。我们使用后者。客户端发送PASV命令给服务器,服务器返回IP地址和端口号,用来提供给客户端进行数据连接。如:227 EnteringPassive Mode (10,175,125,49,9,17)括号里6个数字中前4个数字表示IP地址10.175.125.49,后2个数字表示端口号,这2个数字按如下公式计算端口号:9*256+17=2321这样,客户端就可用IP地址10.175.125.49和端口号2321连接服务器,建立数据连接。

【论文写作】客户端设计与实现中各模块设计如何写相关推荐

  1. 【论文写作】网上选课系统中模块设计如何写

    4.2 模块设计 4.2.1 登录模块设计 登录页面为系统的起始页面,登录界面设计如下图所示: 登录模块的功能是判断登录用户的权限以及将用户导航到不同的页面,管理员.教师和学生登录后的页面都是不相同的 ...

  2. mysql表设计讲解_MySQL中数据库的设计归纳讲解

    谈到MySQL中数据库的设计,相信大家都知道这是实现实际业务的重要一步,因此对于Java学习者来说,深入了解和学习数据库的设计是十分有必要的.本文为大家准备了一份MySQL中数据库的设计归纳讲解,内容 ...

  3. 【论文写作】网上选课系统中数据库设计模块如何写

    4.1 数据库设计 为充分保护数据的一致性,数据库中各表都规范化设计,下图是系统数据库中使用的表以及各表之间的关系: 1CourseID:课程ID,自动编号: 2CourseName:课程名称: 3T ...

  4. 【论文写作】网上办公自动系统中功能需求如何写

    4.3 功能需求: 一般来说,政府部门办公自动化系统应以公文处理和机关事务管理(尤其以领导办公)为核心,同时提供信息通讯与服务等重要功能,因此,典型的办公自动化应用包括公文管理.督查管理.政务信息采集 ...

  5. 【论文写作】Word文档中的MathType公式大小不一导致版面很难看完美解决方法

    今天在修改论文的时候发现之前用Mathtype7写的论文中的公式大小都变了,尤其是在论文中的公式,都变小了,看起来非常明显,导致版面很难看.下面是我弄的一个简单的例子 经过网上一番查找后,发现原因是W ...

  6. 论文写作(1):CRediT authorship contribution statement怎么写

    CRediT authorship contribution statement怎么写 相关链接 CRediT author statement 是什么 CRediT(Contributor Role ...

  7. ios双指放大缩小_用PS设计APP过程中改进IOS设计流程的30个秘诀

    设计是一个漫长和痛苦的过程,期间可以用点技巧来减少痛苦,30+ tips to improve your iOS design workflow (in Photoshop)一文总结30个实用的技巧可 ...

  8. java中为什么设计包装类,Java 中为什么要设计包装类

    最近文章更新频率慢了,因为最近在准备暑期实习,之前寻思着一边复习一边写文章,两全其美.后来发现一篇读起来比较舒服的文章写出来加上配图得花上四五个小时甚至更多,但这个知识点我可能半个小时就能复习完了,春 ...

  9. 电商产品设计:后台营销功能模块设计-拼团活动(二)

    营销手段是电商中灵魂所在,今天要讲解的是"拼团"这一模式.我们熟知的拼多多就是在流量红利已经触底的情况下,以拼团这种模式杀出一条血路.现在我们一起来看一下拼团所涉及的逻辑关系及其作 ...

最新文章

  1. 测试优惠券要怎么写测试用例?
  2. 5 个被忽视的习惯,决定了你很难成为高级开发工程师!
  3. [EntLib]微软企业库5.0 学习之路——第七步、Cryptographer加密模块简单分析、自定义加密接口及使用—上篇...
  4. Android客户端内置内存工具进行崩溃定位的实践经验
  5. 大型互联网公司架构演进之路汇总
  6. 假设检验在数据分析中的应用
  7. recorder_将Java Flight Recorder与OpenJDK 11一起使用
  8. OEM信息自定义工具v2.0
  9. Python在线 基础教程
  10. 100行Html5+CSS3+JS代码实现元旦倒计时界面
  11. 如何从任何Mac或Windows PC为iOS打印启用AirPrint
  12. 计算机考证包括cad吗
  13. django mysql内存泄漏_Django ORM性能优化,数据存取优化
  14. 泛泰A870刷4.4专用英文版非触摸CWM Recovery 6.0.4.8(三版通刷)
  15. 爱和感恩2021年末记
  16. MOCTF-WRITE-UP(二)
  17. php echarts 嵌套饼图,echarts绘制嵌套环形图/ 双饼图
  18. 中医五行学说详细资料
  19. WXML和HTML的区别
  20. SLAM--Geometric jacobian of UR series.

热门文章

  1. rundeck入门-基础知识
  2. 【转】const_cast
  3. C++ 纯虚函数与抽象类
  4. 150904 高速公路 ccf
  5. prettier 指“北”
  6. IIS W3C日志记录字段和HTTP状态代码的说明
  7. 一个用SAM维护多个串的根号特技
  8. XidianOJ 1175: count
  9. 根据文件前四个字节判断文件类型(centos 7)
  10. 04-struts2框架中获取servlet api及Result结果类型