# S-FTPClient-
S-FTPClient(Swing,Java,Socket,FTP,加密算法)
## 问题描述
实现一个图形用户界面的FTP客户端,保证文件的安全传输和存储。客户端能够发出各种操作命令;实现conn(连接)、list(列示文件)、retr(下载)、store(上载)的功能;使用一种加密算法,在文件上载前进行加密,文件以密文的形式传输和保存在FTP服务器上,设计客户端的密钥管理机制。
## 基本要求
1.实现一个图形用户界面的FTP客户端,保证文件的安全传输和存储。
2.功能:
2.1 配置使用IIS的FTP服务器;
2.2 客户端发出各种操作命令;至少实现conn(连接)、list(列示文件)、retr(下载)、store(上载)的功能;选择你学过的加密算法,在文件上载前进行加密,文件以密文的形式传输和保存在FTP服务器上,设计客户端的密钥管理机制。
2.3 接收服务器的操作结果,如显示连接状态,对下载的文件进行解密等。
3.用户界面:客户端界面用户可以设置远程主机名、用户和密码;显示远程文件列表;显示本地文件的列表;操作命令可以采用菜单、按钮及弹出菜单来实现;显示操作状态(操作是否成功、状态、文件操作的进度等)。
## 设计思想
FTP客户端是建立在Java的Swing技术上,首先设计好大概的FTP客户端的界面模型,然后利用Java的Swing技术绘制好FTP客户端的界面,最后利用Socket技术设计操作FTP客户端的命令等。用户可以通过它把自己机器与世界各地所有运行 FTP协议的服务器相连,访问服务器上的资源和信息。当启动 FTP 从远程计算机拷贝文件时,事实上启动了两个程序:一个本地机器上FTP客户端程序,它向 FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的 FTP服务器程序,它响应请求把你指定的文件传送到你的计算机中。
在典型的 FTP 会话过程中,用户一般坐在本地主机前进行同远程主机之间的文件传输。为了能够访问远程账户,用户必须提供用户标识和密码。在通过了身份验证之后,用户就可以在本地主机和远程主机之间传输文件了。用户通过 FTP 的用户代理与 FTP 进行交互。用户首先需要远程提供主机名或 IP 地址,以便本地 FTP的客户进程能够同远程主机上的 FTP服务器进程建立连接。然后,用户提供其标识和密码。一旦验证通过,用户即可在两个系统之间传输文件。
FTP使用两个并行的 TCP协议来传输文件,一个称为控制连接,另一个称为数据连接。控制连接用来在两台主机之间传输控制信息,如用户标识、密码、操作远程主机文件目录的命令、发送和取向文件的命令等。而数据连接则真正用来发送文件。FTP的控制和数据连接如下图所示。
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE1.png)
当用户启动一次与远程主机的 FTP会话时,FTP首先建立一个 TCP连接到 FTP服务器的 21号端口。FTP的客户端则通过该连接发送用户标识和密码等,客户端还可以通过该连接发送命令以改变远程系统的当前工作目录。当用户要求传送文件时,FTP服务器则在其 20号端口上建立一个数据连接,FTP在该连接上传送完毕一个文件后会立即断开该连接。如果再一次 FTP会话过程中需要传送另一个文件,FTP服务器则会建立另一个连接。在整个 FTP会话过程中,控制连接是始终保持的,而数据连接则会随着文件的传输不断的打开和关闭。
综上所述需要根据FTP的控制连接和数据连接这整个流程完成对FTP的操作。
## 系统结构
经过需求分析后,决定此FTP客户端分本地文件加载系统模块、连接数据模块、断开连接模块、下载模块、刷新模块、删除模块等几项关键的模块。本程序的系统结构图如下:
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE2.png)
### FTP客户端结构图
本地文件系统加载模块:
当页面初始化的时候用来加载本地文件系统的,可以让用户更为直观的,方便的,快捷的选择本地相应的文件进行浏览、上传等操作。本地文件系统加载模块如图所示:
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE3.png)
本地文件系统加载模块
连接模块:
连接模块是在图形界面下用户交互与FTP服务器建立连接的一个核心的模块功能。可以使用规定好的IP地址进行连接,IP无论是外网还是内网都可以进行连接。支持不同端口的FTP服务器进行连接,这个设计是为了方便不同端口的FTP。支持匿名用户和FTP普通用户登录客户端。全称由用户决定,随时可以输入的。连接模块如图所示:
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE4.png)
连接模块
断开模块:
断开模块是方便用户断开已有的连接而设计的。此功能图和连接模块的图一样。
下载模块:
下载模块是为用户下载FTP服务器的文件而设计的。当用户想要下载的时候,必须要选择上想要下载的文件。不然是不能下载的,界面设计如下:
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE5.png)
下载模块
刷新、删除模块如上图所示。
##程序流程
本系统主要的流程如下:
从运行程序到登录FTP服务器到拉取FTP服务器目录
上传文件流程图:
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE6.png)
下载数据流程图:
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE7.png)
加密流程:
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE8.png)
解密过程:
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE9.png)
## 测试数据
1、测试环境
使用IIS搭建的本地的FTP服务器。
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE10.png)
2、测试数据
第一种:
只输入FTP服务器的连接地址:127.0.0.1
第二种:
输入地址:127.0.0.1
端口:21
账号:zhenghui
密码:8042965
然后进行上传本地的文件和下载FTP服务器上的文件
## 测试情况
第一种情况:
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE11.png)
选择文件上传
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE12.png)
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE13.png)
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE14.png)
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE15.png)
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE16.png)
下载:
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE17.png)
下载到特定位置:
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE18.png)
下载后的文件:
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE19.png)
选择一个进行删除
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE20.png)
删除后会立马刷新列表
![image](https://github.com/8042965/S-FTPClient-/blob/master/images/%E5%9B%BE21.png)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Java是一种高性能、跨平台的面向对象编程语言。它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等人在1995年推出,被设计为一种简单、健壮、可移植、多线程、动态的语言。Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run Anywhere): Java的代码可以在不同的平台上运行,只需编写一次代码,就可以在任何支持Java的设备上执行。这得益于Java虚拟机(JVM),它充当了代码和底层硬件之间的中介。 面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这对于开发需要高并发性能的应用程序(如服务器端应用、网络应用等)非常重要。 自动内存管理(垃圾回收): Java具有自动内存管理机制,通过垃圾回收器自动回收不再使用的对象,使得开发者不需要手动管理内存,减轻了程序员的负担,同时也减少了内存泄漏的风险。
资源推荐
资源详情
资源评论
收起资源包目录
S-FTPClient(Swing,Java,Socket,FTP,加密算法).zip (92个子文件)
SJT-code
LICENSE 11KB
.gitignore 278B
images
图11.png 191KB
图10.png 251KB
图8.png 31KB
图12.png 67KB
图15.png 3KB
图2.png 84KB
图1.png 42KB
图13.png 70KB
图16.png 19KB
图7.png 32KB
图20.png 19KB
图3.png 25KB
图14.png 4KB
图4.png 5KB
图17.png 84KB
图9.png 251KB
图6.png 23KB
图18.png 9KB
图5.png 13KB
图21.png 13KB
图19.png 29KB
README.md 8KB
S-FTP
lib
commons-net-3.6.jar 300KB
jfreechart-1.0.13.jar 1.36MB
jcommon-1.0.16.jar 302KB
gnujaxp-1.0.0.jar 227KB
image
xiazai.png 646B
fanhui.png 455B
shuaxin.png 1KB
duankai.png 621B
lianjie.png 1KB
shanchu.png 971B
src
view
ZFTP_JMenu.java 2KB
ZTFP_Main.java 7KB
BLL
MemoryInfo.java 729B
DriveChart.java 2KB
FileDelete.java 3KB
GetFileNames.java 827B
FileTime.java 2KB
GetFileIcon.java 1KB
DirectoryInfo.java 1KB
FileSearch.java 3KB
FilesTree.java 9KB
ftpController
ftpEntity.java 1KB
FTPTableModel.java 7KB
FileEntity.java 1KB
ftpReadSocket.java 10KB
FTPController.java 11KB
util
ZHFileBase64Key.java 2KB
ZHFileCipherTxst.java 3KB
UI
FileProperties.java 14KB
MainForm.java 36KB
MyCellRenderer.java 1KB
S-FTP.iml 2KB
bin
view
ZTFP_Main.class 5KB
ZFTP_JMenu.class 2KB
ZTFP_Main$2.class 637B
ZTFP_Main$3.class 637B
ZTFP_Main$1.class 852B
BLL
FileDelete.class 2KB
FilesTree$1.class 1KB
GetFileNames.class 1KB
MemoryInfo.class 1KB
GetFileIcon.class 2KB
FilesTree$2.class 881B
FileSearch.class 3KB
DriveChart.class 3KB
FilesTree$FileTreeNode$1.class 1KB
FilesTree$FileTreeCellRenderer.class 3KB
FilesTree$FileTreeNode.class 3KB
FilesTree.class 2KB
FileTime.class 2KB
DirectoryInfo.class 1KB
ftpController
ftpEntity.class 2KB
FileEntity.class 1KB
ftpReadSocket.class 8KB
FTPController.class 11KB
FTPTableModel.class 6KB
util
ZHFileBase64Key.class 2KB
ZHFileCipherTxst.class 3KB
UI
MainForm$6.class 646B
MainForm$3.class 731B
MainForm$1.class 2KB
MainForm$2.class 4KB
MainForm$5.class 3KB
FileProperties.class 10KB
MainForm$7.class 2KB
MyCellRenderer.class 2KB
MainForm$4.class 759B
MainForm.class 19KB
共 92 条
- 1
资源评论
JJJ69
- 粉丝: 6131
- 资源: 5674
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- docker一键安装包
- Screenshot_20240430_144340_com.ss.android.ugc.live.jpg
- 回到山沟沟.mp3
- 基于matlab实现自适应波束形成RLS及LMS算法仿真源程序1.rar
- 基于matlab实现自己编写的基于卡尔曼滤波的利用加速度传感器的计步器,测试数据是传感器放在腰部和手臂 .rar
- 基于matlab实现阵列信号处理,波束形成.rar
- 111111111111111111
- 基于matlab实现计步器编程;对当前的计步器装置的数值算法模拟 .rar
- Mdb学习查看PW;access;mdb;pw;password;patch
- 基于matlab实现关于语音信号声源定位DOA估计所用的一些传统算法.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功