# Java
**Repository Path**: WangXinnnn/java
## Basic Information
- **Project Name**: Java
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-05-17
- **Last Updated**: 2024-05-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 一、设计目标
本这里是列表文本Java工程旨在设计并实现一个安全、可靠的文件传输系统,它不仅提供了基本的文件发送功能,还通过加密技术确保了数据传输的安全性。以下是本工程的主要设计目标:
1. 易用性:用户应能够通过简单的命令行指令来发送和接收文件,无需复杂的配置。
2. 安全性:所有传输的文件都将通过强加密算法进行加密,以保护数据在传输过程中的安全。
3. 灵活性:支持发送文件给指定用户或发送给所有用户(@all),以适应不同的使用场景。
4. 实时反馈:在文件传输过程中,系统将在控制台提供实时的状态更新,如“开始接收中”和“接收完成”。
5. 数据存储:传输完成后,系统将解密文件并将其保存为XML或JSON格式,以便于数据的进一步处理和分析。
6. 应用性:用户可以通过简单的命令来查看XML和JSON文件的内容,支持文本格式的直接查看。
7. 文档和示例:提供清晰的文档和使用示例,帮助用户快速理解如何使用本系统。
8. 异常处理:系统能够妥善处理运行过程中可能出现的异常,并给出清晰的异常提示。
# 二、系统框架

如上图,本工程系统框架主要为四个层次,以下给出各层的详细说明:
1. 前端界面层:本系统允许用户发送文件、接收文件和查看文件。用户通过这个界面与系统进行交互,发送业务请求,这里我们通过Java终端输入命令行实现。
2. 业务逻辑层:负责处理用户的业务请求,包括发送文件、接收文件和查看文件的逻辑。这一层是系统的核心,负责实现文件传输和查看的主要功能
3. 系统工具能力层:
- 加密工具 :提供加密和解密功能,确保传输的文件安全。
- 通讯适配:负责与通讯基础能力层进行交互,处理网络通讯的细节。
- 文件处理 :处理文件的读取、传输、存储。
4. 通讯基础能力层
- Server:作为服务器端,负责维护客户端连接、文件传输会话和状态管理。
- Client:作为客户端,负责与服务器建立连接、发送请求和接收响应。
- 观察者 :实现观察者模式,用于在系统内部组件之间传递状态更新和事件通知。
- 注册者 :用于订阅和接收来自观察者的状态更新和事件通知。
- 通知 :负责在系统内部发布事件通知,以触发相关的动作或响应。
# 三、系统类图
为了合理进行系统的实现,系统类图需要涵盖客户端和服务器端的实现,并包括加密、解密、文件传输以及命令处理等功能。

# 四、时序图
按照类图中核心类FileClient,FileClientHandler,FileServer,FileServerHandler,FileUtil完成发送的文件加密保证安全,通过自定义传输协议进行客户端与客户端,客户端与服务端的信息传递。

# 五、数据结构
结构内容:

1. 版本号:
- 描述版本信息
2. 消息标志位:
- 描述消息是否经过压缩加密
3. 同步序列号:
- 备用信息描述传输进度
4. 命令码:
- 描述show和send
5. 文件内容:
- 发送/查看文件的内容
异常处理:
1. 文件读取/查看异常:
文件读取和写入操作可能会因为文件不存在、无权限访问、磁盘空间不足等原因失败。需要捕获IOException并给出合理的错误提示。
2. 加密/解密异常:
加密和解密过程中可能会遇到不支持的加密算法、错误的密钥、损坏的加密数据等异常。
3. 网络通信异常:
在网络通信过程中,可能会遇到连接超时、断开连接、协议错误等问题。
4. 资源释放异常:
在释放资源,如关闭文件流可能会遇到异常。需要确保即使在发生异常的情况下,资源也能被正确释放。
5. 客户端输入验证异常:
对于客户端输入的命令,需要进行验证,检验是否符合规定的格式。
# 六、流程图
1. 用户进入客户端界面
2. 输入命令进行传输
3. 服务端解析命令进行判断
1. Send
1. 选择指定个人客户端进行传输,经过加密解密展示内容
2. 选择指定所有个人客户端进行传输,经过加密解密展示内容
2. Show
1. 经过解密展示文件内容
总体流程图:

查看文件流程图:

发送文件流程图:

服务器转发文件流程图:

加密文件流程图:

解密文件流程图:
