# Uchat——基于python的安全即时通讯系统 ## 目的 设计完成简易的安全即时通讯系统,实现类似于QQ的聊天软件; ## 需求分析 ### 功能需求 1. 聊天客户端 1. 注册:用户与集中服务器通信完成注册,包括用户名、密码、邮箱、性别、年龄、数字证书等信息传输,其中数字证书包含公钥、用户名、邮箱等信息。私钥单独保存在客户端一个文件夹下不进行传输;能显示用户名、邮箱不符合格式规范或者重复,空输入等错误信息。 2. 认证登录:客户端与集中服务器通信完成用户名、口令认证登录;能显示用户名、密码错误导致的登录错误信息。还有已登录账号再次登录时的多重登录检验,并将之前登陆的账号顶下去。 3. 好友管理:用户可通过服务器进行搜索、添加、删除好友。 4. 即时通信:用户通过客户端实现与好友的聊天,包括文字、图片传输。文字可实现字体颜色和大小的改变。 5. 聊天记录:客户端能够保存聊天记录并且可以查看聊天记录。 6. 消息加解密:采用D-H体制协商加密秘钥,用对称密码AES算法进行加解密。 7. 消息摘要:使用MD5算法实现消息摘要认证功能,确保发送消息的完整性。 8. 用户未读消息提醒:红点标注未读消息数目,并按最后发送消息时间排列好友列表。 9. 用户离线后消息处理:用户上线后及时接收到离线时好友发送的消息。 功能结构图 ![](https://leeyuxun-1258157351.cos.ap-beijing.myqcloud.com/img/20200714124535.png) 2. 集中服务器 1. 用户注册:与用户通信完成注册,对用户名和邮箱格式、是否重复,输入不规范等做必要的检验,接收客户端的数字证书,发送服务端数字证书。 2. 登录验证:用户登录时,验证用户名和密码是否正确,并向客户端返回登录结果。如信息正确,就将在线好友用户发给该用户,将该用户的状态发给各在线好友用户,同时在服务器端显示出来。 3. 用户公钥,证书提供:用户向好友发送消息时,与服务器建立安全连接获取好友的证书信息,服务器控制client.socket像好友用户发送信息,实现用户之间的通信。 4. 用户在线状态维护:当用户在线时,记录保存用户的在线状态、IP地址、端口号。 5. 用户消息列表实时发放:由监听函数将操作实时加入到执行函数列表中递归执行。向用户发送其好友列表的在线离线情况,包括好友用户名、IP地址、端口号。并按照最后发消息的时间对好友消息列表进行排序。 功能结构图 ![](https://leeyuxun-1258157351.cos.ap-beijing.myqcloud.com/img/20200714124653.png) 3. 高级功能 1. 离线用户消息通知:暂时存储离线用户的消息,用户上线后,显示未读的消息并用红点标注; 2. 好友在线离线功能实时更新; 3. 限制账号只能一处登录:一个账号只能在一处登录,在别处登录时会把原先的登录踢下线; 4. 支持群聊功能:可以创建群聊,并根据群号加入群聊; 5. 聊天时字体大小颜色可更改; 6. 支持聊天各类图像文件的缓存。 -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
《玩偶姐姐.HongkongDoll.会员短篇集.假日瑜伽》...
浏览:730 时间:2024-02-13《原神》画外旅照青植之篇第七天怎么过?画外旅照第七天玩法介绍...
浏览:432 时间:2024-01-08一支国际团队为《人间失格》制作加码,“野角叔”首次为中文音乐...
浏览:91 时间:2024-01-28《生死疲劳》中提到的《苦胆记》真的是虚构的吗?【莫言吧】...
浏览:4 时间:2024-11-21