基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计

系统功能


用户登录功能

用户发送信息功能

提供可视化图形界面

二、相关技术


使用了 python GUI 类库 中的图形化界面

多任务线程

网络编程

数据库编程

三、总体设计


项目概述:

聊天室是一款 C/S(客户端/服务器端)模式的软件,包含了服务器端程序和客户端程序两部分,客户端发送聊天信息到服务器,服务器将信息转发给其他在线登录的用户。

客户端 john 《----接收《--------

客户端 edward 《-----接收《--------- 服务器

用户端 smith ------》发送---------》

项目环境:

Window10+python3.7+pycharm

项目模式:C/S 模式

所用技术:1.python GUI 类库

多任务线程

网络编程

数据库编程

项目架构:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第1张图片

需要的类库:

PYMYSQL0.10.1PIP20.2.4Flask1.1.2config0.5.0post()coverage5.3Scipy1.5.4

四、详细设计


客户端:

登录界面:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第2张图片

聊天界面:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第3张图片

服务器端:

作为服务的提供者,负责用户的登录验证,聊天信息转发。

服务端程序工作任务让服务器程序保存所有在线用户的链接,只需要将信息发送给服务器程序,服务器程序负责转发给其他用户服务器 (地址固定)

客户端 john 客户端 edward 客户端 smith

业务逻辑:

开始

创建套接字并监听指定端口

开启线程处理当前客户端请求

多任务线程并发技术

接收客户端请求并判断请求类型

登录请求处理 聊天请求处理

退出

响应协议设计:(通信格式的设计)

为了实现客户端和服务器端之间的通信,约定给客户端发送什么哥是的数据给服务器,服务器又需要返回什么样格式的数据给客户端,客户端会有不同的请求,所以针对不同的请求和响应定义了响应编号,来区分不同的请求和响应。

登录响应格式:”1001|ret|nickname|username”

ret 代表服务器端验证的结果,如果是字符‘0’,则表示服务器端验证失败,后面的 nickname username 会为空字符串,如果 ret 的值是‘1’,表示服务器端验证成功

nickname 为服务器返回的该用户昵称

username 为该用户的用户名。

聊天响应格式“1002|nickname|messages”,nickname 为聊天信息发送者的昵称,messages 为其发送的聊天信息

conflg.py 模块:

定义了服务器需要的一些变量,为实现客户端和服务器端通信而定义的一些数据协议编号,协议编号定义:

# 数据协议相关配置REQUEST_LOGIN=’0001’#登录请求REQUEST_CHAT=‘0002’#聊天请求RESPONSE_LOGIN_RESULT=‘1001’#登录结果响应RESPONSE_CHAT=‘1002’#聊天响应DELIMITER=‘|’#自定义协议数据分割符

Response_protocol.py 模块(响应协议):

定义一些快捷函数用来生成快捷函数 来生成对应格式的响应数据

# 服务器配置SERVER_IP='127.0.0.1'SERVER_PORT=8090

五、运行结果


阶段一:测试 服务器启动,以及收发消息

启动服务: ---》启动测试

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第4张图片
基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第5张图片
基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第6张图片
基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第7张图片

阶段二: 代码优化

套接字封装 优化

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第8张图片

服务器通过套接字,及逆行传输数据,进行代码优化

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第9张图片

线程优化:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第10张图片

第三阶段 多任务 子线程阶段:

  • 有客户端--》服务器

  • 编程 客户端--》子线程--》 服务器 -- 》客户端

  • 服务器端

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第11张图片

客户端:多开

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第12张图片

结果:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第13张图片

1 号

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第14张图片

2 号

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第15张图片

3 号

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第16张图片

阶段四:解析数据:

客户端给服务器发送的消息格式:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第17张图片

客户端:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第18张图片

服务器:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第19张图片

对服务器进行优化:对信息进行切割处理:

存入字典的信息,根据切割,划分为不同的信息段,进行不同的操作。

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第20张图片

客户端:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第21张图片

服务器端:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第22张图片

阶段五

登录请求的处理:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第23张图片

服务器:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第24张图片

客户端:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第25张图片
  • 阶段六

  • 数据库阶段: 引入 pymsql 库 引入 config 配置文件

  • 数据库链接

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第26张图片

获取数据库信息:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第27张图片

测试数据:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第28张图片

阶段七

用户登录检查:

服务器链接数据库:进行测试操作

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第29张图片

服务器:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第30张图片

客户端:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第31张图片

用户下线处理:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第32张图片

服务端:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第33张图片

客户端:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第34张图片

用户信息转发:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第35张图片

客户端:

服务器:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第36张图片

阶段八:

用户登录界面设置:

使用 python GUI 自带的组件

按钮的响应:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第37张图片

测试重置:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第38张图片

点击重置:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第39张图片

阶段九

客户端链接数据库并给服务器发送信息测试链接数据:

连接成功的案例

服务器:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第40张图片

客户端:

链接失败的案例

客户端:

注意看协议的返回状态。

阶段十

开启客户端消息线程:

服务端:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第41张图片

客户端:注意 result 的值 状态变化

正确

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第42张图片

失败:

基于python flask 搭建的简单聊天室 完整代码+报告 毕业设计_第43张图片

完整代码:https://download.csdn.net/download/qq_38735017/87410050

你可能感兴趣的:(python实战100例,python,flask,聊天室,计算机毕设)