资源下载地址:https://download.csdn.net/download/sheziqiong/85706472
资源下载地址:https://download.csdn.net/download/sheziqiong/85706472

一、系统概述

1.1 业务背景

FTP 服务提供了对文件传输的支持,Web 服务提供了可供浏览的网页。对 FTP 文件传输服务的需求以及对浏览 Web 服务的需求是本程序的背景,当然现在已经有很多 FTP 和 Web 服务器的很好的实现,本程序也不可能说做得比知名的那些要好,在这里程序的目的是为了锻炼网络程序设计与实践和软件系统设计与开发实践能力。

1.2 总体目标

实现一个 FTP 服务,能够在客户端和服务器端查看和传输文件,使用 TCP 和 UDP 两种协议方式进行实现,并实现一个 Web 服务器,能够提供让标准浏览器用 HTTP 协议来进行访问的网页,并且能够支持多线程非阻塞的服务。综上所述,最后会提供一个 FTP 服务器、一个 FTP 客户端、一个 Web 服务器程序。

二、系统分析和设计

2.1 系统概述

2.1.1 业务需求描述

FTP 服务器需求:

  • 为客户端提供查看文件的功能;
  • 为客户端提供上传文件的功能;
  • 为客户端提供下载文件的功能;
  • 能够接受 TCP 协议的访问方式;
  • 能够接受 UDP 协议的访问方式。

FTP 客户端需求:

  • 能够从服务器上查看文件;
  • 能够向服务器上上传文件;
  • 能够从服务器上下载文件;
  • 能够通过 TCP 协议访问服务器;
  • 能够通过 UDP 协议访问服务器。

Web 服务器需求:

  • 为标准浏览器提供 Web 服务;
  • 能够接受 http 请求并返回 HTML 网页;
  • 能够支持多线程非阻塞的访问。

2.1.2 外部接口需求

  • 硬件接口:无直接硬件接口,只通过 OS 等软件接口与硬件间接交互。
  • 软件接口:相应的 JDK、JVM 环境,以及标准的浏览器软件。
  • 通讯接口:TCP 协议、UDP 协议、HTTP 协议。

2.1.3 非功能性需求

FTP 服务器要求响应时间不能过长,且稳定、可靠;FTP 客户端要求传输速度不能过慢,且可随时访问服务器;Web 服务器要求响应时间要短,且安全可靠。

2.1.4 约束条件

开发环境:

Eclipse-Java IDE,windows7 系统。

整个项目由 Java 开发,所以要求系统装有相应的 JDK、JVM 环境,另外,FTP 服务器和客户端要求系统有 tcp、udp 协议的接口,Web 服务器要求系统有 http 协议的接口,Web 客户端即为标准的浏览器软件。

开发规范:

  • 文件命能清楚的描述其功能。
  • 代码中的空格与空行上下保持一致。
  • 有适量且清楚的注释。
  • 界面整洁,方便使用。
  • 所有函数及变量有能描述其功能的名字。
  • 应注意代码的简洁和优化。

2.2 用例模型

2.2.1 用例图

2.2.2 [用例 1]详细描述

用例编号: 1 用例名称: FTP 下载文件
1 描述 用户用 FTP 客户端从服务器上通过 TCP 协议下载一个文件; 用户用 FTP 客户端从服务器上通过 TCP 协议下载一个文件; 用户用 FTP 客户端从服务器上通过 TCP 协议下载一个文件;
2 参与者与关注点 FTP 客户端(用户):希望能够得到快速地响应,而且文件没有传输错误。;FTP 服务器:希望能够尽快完成客户端请求,有个较好的吞吐量。 FTP 客户端(用户):希望能够得到快速地响应,而且文件没有传输错误。;FTP 服务器:希望能够尽快完成客户端请求,有个较好的吞吐量。 FTP 客户端(用户):希望能够得到快速地响应,而且文件没有传输错误。;FTP 服务器:希望能够尽快完成客户端请求,有个较好的吞吐量。
3 事件流 主成功场景(或基本流程):;客户端要求建立和服务器建立用于控制对话的 TCP 连接。;服务器响应要求并完成 3 次握手建立连接。;客户端向服务器发送文件名。;服务器接受文件名并建立用于传输的 TCP 连接。;客户端从服务器通过该连接下载文件。;传输完毕,客户端断开与服务器的 TCP 连接。;完成。 主成功场景(或基本流程):;客户端要求建立和服务器建立用于控制对话的 TCP 连接。;服务器响应要求并完成 3 次握手建立连接。;客户端向服务器发送文件名。;服务器接受文件名并建立用于传输的 TCP 连接。;客户端从服务器通过该连接下载文件。;传输完毕,客户端断开与服务器的 TCP 连接。;完成。 主成功场景(或基本流程):;客户端要求建立和服务器建立用于控制对话的 TCP 连接。;服务器响应要求并完成 3 次握手建立连接。;客户端向服务器发送文件名。;服务器接受文件名并建立用于传输的 TCP 连接。;客户端从服务器通过该连接下载文件。;传输完毕,客户端断开与服务器的 TCP 连接。;完成。
3 事件流 扩展(或替代流程):;任意 TCP 连接建立失败:;服务器报错给服务器管理员,管理员检查服务器状态是否异常。;客户端报错给用户并退出。;文件传输过程出错:;客户端报错给用户。;用户重新使用客户端从服务器上下载文件或放弃下载。; 扩展(或替代流程):;任意 TCP 连接建立失败:;服务器报错给服务器管理员,管理员检查服务器状态是否异常。;客户端报错给用户并退出。;文件传输过程出错:;客户端报错给用户。;用户重新使用客户端从服务器上下载文件或放弃下载。; 扩展(或替代流程):;任意 TCP 连接建立失败:;服务器报错给服务器管理员,管理员检查服务器状态是否异常。;客户端报错给用户并退出。;文件传输过程出错:;客户端报错给用户。;用户重新使用客户端从服务器上下载文件或放弃下载。;
4 前置条件 服务器已运行。 服务器已运行。 服务器已运行。

2.2.3 [用例 2]详细描述

用例编号: 2 用例名称: Web 浏览器查看网页
1 描述 用户用 Web 浏览器访问 Web 服务器的一个网页: ; 用户用 Web 浏览器访问 Web 服务器的一个网页: ; 用户用 Web 浏览器访问 Web 服务器的一个网页: ;
2 参与者与关注点 Web 浏览器(用户):希望得到快速的响应,能够看到正确的网页。;Web 服务器:希望能够快速正确地完成浏览器请求,并且能够处理多用户同时访问的场景。 Web 浏览器(用户):希望得到快速的响应,能够看到正确的网页。;Web 服务器:希望能够快速正确地完成浏览器请求,并且能够处理多用户同时访问的场景。 Web 浏览器(用户):希望得到快速的响应,能够看到正确的网页。;Web 服务器:希望能够快速正确地完成浏览器请求,并且能够处理多用户同时访问的场景。
3 事件流 主成功场景(或基本流程):;1.用户在浏览器中输入要访问的网址:。;2. Web 服务器解析 HTTP 协议请求。;3. Web 服务器处理该请求并通过 TCP 连接向浏览器返回目标网页 HTML 文件。;4. 浏览器解析并显示该 HTML 文件。;5. 用户看到该网页。;6. 完成。 主成功场景(或基本流程):;1.用户在浏览器中输入要访问的网址:。;2. Web 服务器解析 HTTP 协议请求。;3. Web 服务器处理该请求并通过 TCP 连接向浏览器返回目标网页 HTML 文件。;4. 浏览器解析并显示该 HTML 文件。;5. 用户看到该网页。;6. 完成。 主成功场景(或基本流程):;1.用户在浏览器中输入要访问的网址:。;2. Web 服务器解析 HTTP 协议请求。;3. Web 服务器处理该请求并通过 TCP 连接向浏览器返回目标网页 HTML 文件。;4. 浏览器解析并显示该 HTML 文件。;5. 用户看到该网页。;6. 完成。
3 事件流 扩展(或替代流程):;传递网页的 TCP 连接建立失败:; Web 服务器报错给服务器管理员,管理员检查服务器状态是否异常。;Web 服务器没有响应(浏览器无法连接到服务器):; 检查 Web 服务器是否已经运行、网址是否输入正确。 扩展(或替代流程):;传递网页的 TCP 连接建立失败:; Web 服务器报错给服务器管理员,管理员检查服务器状态是否异常。;Web 服务器没有响应(浏览器无法连接到服务器):; 检查 Web 服务器是否已经运行、网址是否输入正确。 扩展(或替代流程):;传递网页的 TCP 连接建立失败:; Web 服务器报错给服务器管理员,管理员检查服务器状态是否异常。;Web 服务器没有响应(浏览器无法连接到服务器):; 检查 Web 服务器是否已经运行、网址是否输入正确。
4 前置条件 Web 浏览器已运行。 Web 浏览器已运行。 Web 浏览器已运行。

2.3 领域类图

2.3.1 FTP(UDP)类图

2.3.2 Web(TCP)类图

2.3.3 FTP(UDP)核心顺序图

2.3.4 Web(TCP)核心顺序图

2.4 体系结构设计


2.5 程序流程说明

FTP 服务器:

FTP 客户端:

服务器流程:

  • 建立 TCP 套接字
  • 获得与本服务器连接的客户端的套接字
  • 从客户端接收文件名
  • 若文件存在,读取文件内容,传给客户端,结束
  • 若文件不存在,告诉客户端文件不存在,结束

伪代码:

ServerSocket welcomeSocket = new ServerSocket(portnumber);
Socket connectionSocket = welcomeSocket.accept();
BufferedReader infromClient = connectionSocket.getInputStream();
DataOutputStream outToClient = connectionSocket.getOutputStream();//
ClientSentence = infromClient.readLine();
File f = new File(ClientSentence);
RandomAccessFile in = new RandomAccessFile(ClientSentence,"r");
String total = "";
try {while ((s = in.readLine()) != null) {total = total + s;}outToClient.writeBytes(total + '\n');in.close();
}
catch (Exception e)
{outToClient.writeBytes("File not exist.\n");
}

客户端流程:

  • 建立 TCP 套接字,与服务器连接
  • 读取用户输入
  • 将其传给服务器
  • 从服务器得到文件内容
  • 将其显示给用户
  • 关闭套接字

伪代码:

Socket clientSocket = new Socket(hostname,port );//
DataOutputStream outToServer = clientSocket.getOutputStream();
BufferedReader inFromServer = clientSocket.getInputStream();
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence+"\n");
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER:" + modifiedSentence);
clientSocket.close();

结果图:

Web 服务器:

结果图:

2.6 系统物理架构

一台电脑即可,所有程序都在其上运行。

四、系统测试

4.1 单元测试

FTP:

4.2 HP QuickTest Professional 实验

录制测试脚本后,执行测试经常异常,解决办法就是关掉其他运行的资源,多试几次,终于遇到成功的情况了。

QTP 可以直接录制屏幕上的操作流程,自动生成功能测试或者回归测试用例。专业的测试者也可以通过提供的内置脚本和调试环境来取得对测试和对象属性的完全控制。它具有行业领先的便于使用的特性,以及支持提前配置环境的功能,确保了快速的投资回报,可独立运行,也可以同惠普业务流程测试和惠普质量中心集成。它引进了新一代的“零配置”关键词驱动测试技术,从而实现了快速建立测试、测试脚本更易维护,和更强大的数据驱动能力,为不同语言的应用测试提供统一代码支持,在目标与 UniqueSmartObjectRecognition 之间建立联系,即使目标的构件不断变化,通过全面执行检查点获得完全合法的应用软件,也能保证确定的却未被注意的脚本的执行,快速隔离并诊断缺陷,用一体化报告形式写出,并以 XML 和 HTML 的形式输出,利用自动化文档技术把测试文档和测试创建合并成为一个步骤,通过集成的数据表(DataTable),可数据驱动任意对象、方式、检查点和输出值等。

缺点就是对系统资源占用较多,有时候会运行异常,需要多次尝试。

4.3 HP Loadrunner 实验

准备测试:

结果分析:

可以看出在小规模下,服务器是可以正确处理请求的。

在不断提升用户数时,服务器的响应时间也越来越长,说明多线程能力在用户量大的时候,服务器的压力还是很大的。

资源下载地址:https://download.csdn.net/download/sheziqiong/85706472
资源下载地址:https://download.csdn.net/download/sheziqiong/85706472

基于Java实现的一个FTP服务相关推荐

  1. 基于JAVA疫情下居家隔离服务系统计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA疫情下居家隔离服务系统计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA疫情下居家隔离服务系统计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S ...

  2. vsftpd pam mysql_vsftpd+mysql+pam实现基于数据库的安全的ftp服务

    1.方案分析 mysql:存储用户信息的,可以放vsftpd用户的信息 pam:可插入用户认证模块 VSFTPD:安全的ftp服务 2涉及到的知识点: vsftp 软件安装.启动服务,监听端口,配置文 ...

  3. 基于Java+SpringBoot+Thymeleaf+Mysql家政服务预约系统设计与实现

    项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于web网页的家政服务预约系统,整个网站项目使用了B/S架构,基于java的springboot框架下开发:管理员通过后台录入信息.管理信息, ...

  4. 简单java socket_基于Java Socket实现一个简易在线聊天功能(一)

    最近做了一个项目,其中有一个在线网页交流的需求,好久没写代码了,手都生疏了,于是先写demo练练手,分享到脚本之家平台,以此做个记录,方便自己和大家使用. 先给大家说下实现步骤分这样几大步: 1.使用 ...

  5. 基于java Restful API 的Sdnote服务端开发笔记

    前奏 欢迎访问我的博客:Lunatic 似乎有大半个月没有啥动静,这段时间一直忙大学生计算机设计大赛,被老师说动参加这项比赛.动心一方面是因为可以有动手的机会,另一方面是对未来阶段有些许帮助. 回来后 ...

  6. java socket ftp登录_基于java socket的简单FTP功能实现

    实现FTP的一些功能,如上传文件,下载文件,显示目录,改变目录,退出等功能 import java.io.BufferedInputStream; import java.io.BufferedOut ...

  7. 基于java jsp的社区志愿者服务系统

    社区志愿者服务系统采用了java的web技术servlet进行开发,基于B/S架构模式,以Myeclipse为开发平台,mysql为数据库,jsp为开发语言制作而成.并且文档方面包括,任务书,开题报告 ...

  8. 用java编写一个聊天程序_基于JAVA实现的一个简单的网络聊天程序

    一.Java Socket的概述 1.Socket套接字方便了开发网络应用程序.TCP面向连接的可靠传输协议.具有数据确认和数据重传机制.保证了发送数据一定能到达通信的对方.UPD协议无连接,不可靠的 ...

  9. 基于JAVA+SpringMVC+MYSQL的家政服务平台

    项目功能: 本系统的宗旨就是建立一个供雇主和家政人员交流的网络平台,为双方提供保障,满足各自的需求,实现利益最大化.用户分为管理员.家政人员和雇主三种角色. ①.管理员的基本功能如下所述: (1)账户 ...

最新文章

  1. @SkipValidation跳过Struts2validation校验器
  2. 机器学习多目标分类模型解法
  3. BPSK、QPSK、MPSK、QAM、16QAM的调制解调Matlab实现
  4. 移动互联网时代的信息安全与防护_移动互联网时代,草根创业还有哪些机会?...
  5. 我的第三个jquery插件——promptForK13内容提示插件
  6. index.html图片弹窗,原生javascript实现图片弹窗交互效果
  7. mysql增数据语句_Mysql 数据增删改查语句
  8. springboot2——MyBatis入门
  9. colinux的安装
  10. Windows系统安全从定制IP策略开始
  11. 商用VR新时代已来临?IDC《VR产业研究白皮书》给出答案
  12. Greenplum分区
  13. 主机连接虚拟机 web服务
  14. 搭配和谐的色彩的秘密
  15. MySQL生产库开发规范
  16. Weka的下载与安装
  17. 线上jvm 内存飙高排查
  18. 服务器选云主机还是VPS主机呢?
  19. 毕业设计-基于微信小程序的“助农”销售系统
  20. 圆周率一千万亿位_圆周率一千位

热门文章

  1. 我劝你别再做流量的奴隶了...
  2. 【道德经】《道德经》第十二章
  3. win10系统设置环境变量,%%的用法
  4. jq分割数组、截取字符串、数组遍历push新数组
  5. JAVA:实现买入和卖出股票的最佳时机算法(附完整源码)
  6. 绑定变量和BIND PEEKING
  7. ACW 795 前缀和
  8. 变频器的载波频率(开关频率、PWM频率)的影响及设定标准
  9. QT5.10+VS写的高仿CE修改器的内存视图控件
  10. 首席新媒体运营商学院黎想:B端新媒体运营思考