# 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. 异常处理:系统能够妥善处理运行过程中可能出现的异常,并给出清晰的异常提示。 # 二、系统框架 ![输入图片说明](https://foruda.gitee.com/images/1716120820590639103/a854c9cc_14416631.png "屏幕截图") 如上图,本工程系统框架主要为四个层次,以下给出各层的详细说明: 1. 前端界面层:本系统允许用户发送文件、接收文件和查看文件。用户通过这个界面与系统进行交互,发送业务请求,这里我们通过Java终端输入命令行实现。 2. 业务逻辑层:负责处理用户的业务请求,包括发送文件、接收文件和查看文件的逻辑。这一层是系统的核心,负责实现文件传输和查看的主要功能 3. 系统工具能力层: - 加密工具 :提供加密和解密功能,确保传输的文件安全。 - 通讯适配:负责与通讯基础能力层进行交互,处理网络通讯的细节。 - 文件处理 :处理文件的读取、传输、存储。 4. 通讯基础能力层 - Server:作为服务器端,负责维护客户端连接、文件传输会话和状态管理。 - Client:作为客户端,负责与服务器建立连接、发送请求和接收响应。 - 观察者 :实现观察者模式,用于在系统内部组件之间传递状态更新和事件通知。 - 注册者 :用于订阅和接收来自观察者的状态更新和事件通知。 - 通知 :负责在系统内部发布事件通知,以触发相关的动作或响应。 # 三、系统类图 为了合理进行系统的实现,系统类图需要涵盖客户端和服务器端的实现,并包括加密、解密、文件传输以及命令处理等功能。 ![输入图片说明](%E7%B1%BB%E5%9B%BE.PNG) # 四、时序图 按照类图中核心类FileClient,FileClientHandler,FileServer,FileServerHandler,FileUtil完成发送的文件加密保证安全,通过自定义传输协议进行客户端与客户端,客户端与服务端的信息传递。 ![输入图片说明](%E6%97%B6%E5%BA%8F%E5%9B%BE.png) # 五、数据结构 结构内容: ![输入图片说明](%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%9B%BE.png) 1. 版本号: - 描述版本信息 2. 消息标志位: - 描述消息是否经过压缩加密 3. 同步序列号: - 备用信息描述传输进度 4. 命令码: - 描述show和send 5. 文件内容: - 发送/查看文件的内容 异常处理: 1. 文件读取/查看异常: 文件读取和写入操作可能会因为文件不存在、无权限访问、磁盘空间不足等原因失败。需要捕获IOException并给出合理的错误提示。 2. 加密/解密异常: 加密和解密过程中可能会遇到不支持的加密算法、错误的密钥、损坏的加密数据等异常。 3. 网络通信异常: 在网络通信过程中,可能会遇到连接超时、断开连接、协议错误等问题。 4. 资源释放异常: 在释放资源,如关闭文件流可能会遇到异常。需要确保即使在发生异常的情况下,资源也能被正确释放。 5. 客户端输入验证异常: 对于客户端输入的命令,需要进行验证,检验是否符合规定的格式。 # 六、流程图 1. 用户进入客户端界面 2. 输入命令进行传输 3. 服务端解析命令进行判断 1. Send 1. 选择指定个人客户端进行传输,经过加密解密展示内容 2. 选择指定所有个人客户端进行传输,经过加密解密展示内容 2. Show 1. 经过解密展示文件内容 总体流程图: ![输入图片说明](%E6%B5%81%E7%A8%8B%E5%9B%BE.png)
查看文件流程图: ![输入图片说明](%E6%9F%A5%E7%9C%8B%E6%96%87%E4%BB%B6%E6%B5%81%E7%A8%8B%E5%9B%BE.drawio.png)
发送文件流程图: ![输入图片说明](%E5%8F%91%E9%80%81%E6%96%87%E4%BB%B6%E6%B5%81%E7%A8%8B%E5%9B%BE1.drawio.png)
服务器转发文件流程图: ![输入图片说明](%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BD%AC%E5%8F%91%E6%96%87%E4%BB%B6%E6%B5%81%E7%A8%8B%E5%9B%BE.drawio.png)
加密文件流程图: ![输入图片说明](%E5%8A%A0%E5%AF%86%E6%B5%81%E7%A8%8B%E5%9B%BE.drawio.png)
解密文件流程图: ![输入图片说明](%E8%A7%A3%E5%AF%86%E6%B5%81%E7%A8%8B%E5%9B%BE.drawio.png)