局域网通讯软件:概要设计

2025/3/211493 字

rCore第四章目前对我来说还是太有难度了,所以先启动这个项目练练手先。

一、需求分析

功能需求和非功能性需求

下面的需求分析是我让 kimi 给我的,感觉中规中矩吧(我没上过需求分析的课)。

功能性需求

即时通讯

  1. 文字聊天 :支持单人和多人聊天,能够发送文字、表情等。
  2. 语音视频通话 :支持一对一和多人语音、视频通话。
  3. 消息推送 :在局域网内,消息能够实时推送,及时提醒用户有新消息。

文件共享

  1. 文件传输 :支持在局域网内传输各种格式的文件,包括文档、图片、视频等。
  2. 文件共享目录 :能够设置共享文件夹,用户可以访问和下载共享目录中的文件。
  3. 文件版本管理 :对于共享文件,能够记录版本信息,方便用户查看文件的历史版本。

安全性能

  1. 数据加密 :对传输中的数据和存储的数据进行加密,防止数据泄露。
  2. 用户认证 :支持多种认证方式,如用户名密码、数字证书等,确保只有授权用户能够使用软件。
  3. 访问控制 :能够根据用户的角色和权限,限制对特定功能和数据的访问。

用户管理

  1. 用户认证 :支持多种认证方式,如用户名密码、数字证书等,确保只有授权用户能够使用软件。
  2. 权限分级 :根据用户的角色和职责,分配不同的权限,如普通用户、管理员等。
  3. 用户信息管理 :能够添加、删除、修改用户信息,方便系统管理员对用户进行管理。

非功能性需求(这我自己给自己要求的)

1.可修改性:模块之间高度独立,在接口不变的情况下,修改功能只用改一个模块;

2.安全性:数据传输要加密,过程无法被窃听或篡改;

3.可用性:服务端稳定不崩溃,持续运行可用性达到99.9%(就是服务器我想做成多端部署的,崩一两个都不会完全掉线)

基本功能点

我先做服务端,就先列一下服务端需要做到什么事情

1.支持多用户的同时连接

2.能够接收和处理用户的请求

具体点就是可以支持用户的注册和登录,以及个人信息管理和局域网多媒体通讯的需求

3.能够向用户返回必要的消息

4.数据传输加密安全

5.稳定不崩溃

二、概要设计

还是先做服务端的概要设计

首先都是服务端了,架构肯定有C/S架构

然后整个功能需求的操作还是比较线性的(对于单个用户的请求来说),所以还采用分层架构的思想

1. 模块图

下面就是我目前设想的模块图(虽然看着简单,但是还是想了蛮久的)

主要就分为三大模块

1.消息接收和发送

负责接收来自客户端的消息和发送服务端想要发给指定用户的消息

所以这个模块是要维护用户的连接状态的,而且也要负责客户端的连接的建立

虽然这个模块接收和发送的数据包都是加密的,但是并不影响其实现功能。

2.消息处理

这个模块按照业务的处理逻辑可以继续细分成一下几个模块

首先来自消息接收和发送模块的包是加密的,并且还是字节流

所以首先需要将发送过来的包解密,需要一个安全模块

解密完成之后,需要对字节数据进行信息整理,转换成可以被统一处理的类的实例,需要一个整理模块

有了可以被统一处理的实例,接下来就是按照请求类型进行不同的业务操作,需要一个业务模块

最终处理完成之后,返回给消息接收和发送模块需要的提示信息,同时将需要返回给客户端的内容加密,交给消息接收和发送模块返回给客户端。

3.数据模型

这个模块比较简单

就是使用ORM方便管理数据库中的数据

2. 时序图

我就画一个大概的总的业务处理过程的时序图。主要是为了方便理清整个操作流程。

3. 数据库设计

先画E-R图

然后把这个E-R图转成数据库表格,得到以下两张表

user表,字段如下

user_id 整数型

username 字符串型(长度我想让ai定,因为我写完了概要设计之后是想把这个文档喂给ai试试看的)

password 字符串型(加密过的)

status 布尔型(在线或不在线)

info表,字段如下

sender,外键user表的user_id,整数型

receiver,外键user表的user_id,整数型

type,枚举型(目前我想到的有message和file)

time,时间戳,整数型

content,message就直接是字符,file就是路径(突然想到那图片算什么呢,后面想想怎么解决)

dead_time,时间戳,整数型(临时想到可以加上的,就可以方便实现消息记录)

好,目前概要设计就这样,今天已经比较晚了,先休息了。明天再打磨下就开始喂AI试试看(目前感觉自己做详细设计还是比较吃力,看看AI怎么做的,参考学习下)

💬 评论区

写评论

暂无评论,来发表第一条吧。

© 2026 Corn 的自留地