即时通讯_Python服务端_CPP客户端_源码

版权声明:本文为博主原创文章,转载请注明出处。 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


截图

服务端
服务端

客户端主界面
客户端主界面

单人聊天界面
单人聊天

多人聊天界面
多人聊天

聊天记录
聊天记录

聊天信息加密
聊天信息加密

文件传输
文件传输


设计思路

数据库结构图
数据库结构图

  1. 客户端与服务端通信约定struct结构体类型,客户端打包数据,服务端解包,根据数据流头部判断数据类型,再进行各种处理;
  2. MYSQL数据库存放6张表,主表user,其他表根据主表设置相应外键限制;离线消息存储至数据库,接收方上线,消息发送完毕后从数据库删除;
  3. 服务端采用Pyhton3,服务端、客户端、数据库统一采用UTF-8编码,可以避免很多Python2编码转换方面的坑,服务端通过mysql.connector与数据库交互,使用Select选择模型对列表循环处理;通过函数字典调用相应函数;
  4. 客户端采用多线程方式处理消息,在CClientSocket类中存放map窗口字典,根据接收消息调用相应窗口;
  5. 聊天信息加密采用XXXTEA算法,来自第三方库,秘钥为好友ID,仅对聊天信息内容部分加密;
  6. 文件传输采用多线程方式,接收方同意后,建立服务端,服务器将IP转发至客户端,发送方再开线程单独连接接收方传输文件;
  7. 视频传输采用OPenCV库,暂时只实现单方面传输,不知道是库版本问题还是环境问题,还有很多问题;

End

猜你喜欢

转载自blog.csdn.net/D_K_01/article/details/79516077