版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/D_K_01/article/details/79516077
XChat
功能
Server_Python:
1. 数据库交互
2. 处理客户端各类消息
3. 离线消息处理
Client_CPP:
1. 注册,登录
2. 单人聊天,多人聊天
3. 搜索好友,添加好友,查看聊天记录,离线消息接收
4. 聊天信息加密
5. 文件传输,单向视频(不稳定)
编译环境
Win10 VS2015;
Python 3.6;
MYSQL 5.7;
OPenCV 3.2;
GitHub
https://github.com/dkni0/XChat
截图
服务端
客户端主界面
单人聊天
多人聊天
聊天记录
聊天信息加密
文件传输
设计思路
数据库结构图
- 客户端与服务端通信约定
struct
结构体类型,客户端打包数据,服务端解包,根据数据流头部判断数据类型,再进行各种处理; - MYSQL数据库存放6张表,主表
user
,其他表根据主表设置相应外键限制;离线消息存储至数据库,接收方上线,消息发送完毕后从数据库删除; - 服务端采用Pyhton3,服务端、客户端、数据库统一采用
UTF-8
编码,可以避免很多Python2编码转换方面的坑,服务端通过mysql.connector
与数据库交互,使用Select
选择模型对列表循环处理;通过函数字典调用相应函数; - 客户端采用多线程方式处理消息,在
CClientSocket
类中存放map
窗口字典,根据接收消息调用相应窗口; - 聊天信息加密采用XXXTEA算法,来自第三方库,秘钥为好友ID,仅对聊天信息内容部分加密;
- 文件传输采用多线程方式,接收方同意后,建立服务端,服务器将IP转发至客户端,发送方再开线程单独连接接收方传输文件;
- 视频传输采用OPenCV库,暂时只实现单方面传输,不知道是库版本问题还是环境问题,还有很多问题;