【实战】MFC客户端Python后端之仿造QQ聊天

news2024/11/6 9:49:42

项目概述

        这里介绍一个很多年以前做的一个小项目,新手小白可以参考学习。本项目旨在开发一个功能丰富的即时通讯及聊天室系统,类似于QQ,具备客户端与服务端通讯、多人聊天室、界面友好度、一对一聊天、通讯内容加密、服务端与数据库交互等功能。此外,还包括用户注册登录、添加好友、搜索好友、查看聊天记录等基础功能,以及文件传输、视频聊天、最近消息、离线消息、防止重复登录等附加功能。

开发环境

  • 操作系统:Windows 10

  • 数据库:MySQL 5.6

  • 编程语言:Python 3.6.2 32bit

  • 集成开发环境:Visual Studio 2015 (VS2015)

        使用vs2015编写python服务器代码和c++ MFC客户端代码

  • 图像处理库:OpenCV 3.4.1

  • 多媒体处理库:FFmpeg 3.4.2 Win64

功能实现

1. 客户端与服务端通讯

        客户端与服务端通过TCP/IP协议进行通讯。客户端发送消息到服务端,服务端接收并处理消息,然后将消息转发给目标客户端。

2. 服务端支持多人聊天实现聊天室功能

        服务端维护一个聊天室列表,每个聊天室包含多个用户。当用户发送消息到聊天室时,服务端将消息广播给聊天室内的所有用户。

3. 界面的友好度

        使用现代化的UI设计原则,确保界面简洁、直观、易用。采用响应式设计,适应不同屏幕尺寸和设备。

4. 一对一的聊天

        用户可以选择特定的好友进行一对一聊天。服务端根据用户选择的目标用户,将消息直接转发给该用户。

5. 通讯内容的加密

        使用AES加密算法对通讯内容进行加密,确保消息在传输过程中的安全性。

6. 服务端与数据库进行交互

        服务端通过MySQL数据库进行用户信息、聊天记录、好友关系等数据的存储和查询。

7. 用户注册登录功能

        用户可以通过注册界面创建新账户,并通过登录界面验证身份。服务端验证用户提供的凭据,并返回相应的权限。

8. 添加好友,搜索好友并聊天

        用户可以通过搜索功能查找其他用户,并发送好友请求。一旦对方接受请求,双方即可开始聊天。

9. 查看聊天记录

        用户可以查看与好友或聊天室的聊天记录。服务端从数据库中检索相关记录并返回给用户。

附加功能

1. 文件传输

        用户可以发送文件给好友或聊天室。服务端接收文件并转发给目标用户。

2. 视频聊天

        使用OpenCV和FFmpeg实现视频聊天功能。客户端捕获视频流并发送给服务端,服务端将视频流转发给目标用户。

3. 最近消息,离线消息,防止重复登录

        服务端维护用户的最近消息和离线消息。当用户登录时,服务端检查是否有重复登录,并返回相应的消息。

数据库设计

代码介绍

MFC客户端代码结构

客户端采用多线程方式处理消息,客户端逻辑类中有map窗口字典,根据接收消息调用相应窗口。

python服务端如下:

软件截图

登录和注册

个人使用界面

群聊

好友聊天

 

代码 csdn下载地址:

https://download.csdn.net/download/linshantang/89620907

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1991149.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

十八.核心动画 - 使用CAGradientLayer图层构建渐变视图

引言 在现代的UI设计中,渐变色和圆角已经成为了不可或缺的元素。无论是应用程序的背景,按钮,还是图标,这些设计趋势不仅使界面更加美观,还能提升用户体验。特别是渐变色,它通过颜色的平滑过渡,…

如何利用绩效考核来强化员工对TPM的参与度?

TPM(Total Productive Maintenance, 全面生产维护)作为一种追求生产系统效率最大化的管理模式,其核心在于通过全员参与和持续改进,实现设备综合效率的最大化。然而,要让这一理念深入人心,并转化为员工的日常…

图片转为pdf怎么弄?亲测有效的8个pdf转换方法安利

图片转PDF怎么弄?在日常的办公生活中,我们经常会需要处理一些文档格式转换难题,图片转成PDF格式就是其中一个,图片转换成PDF格式的话,方便我们传输分享,毕竟现在PDF格式凭借着自身的稳定性和可移植性已经成…

李晨晨的嵌入式学习 DAY20

今天主要对zuot学习函数进行了补充 一,文件IO函数 1.fileno函数 类型转换函数 函数原型:int fileno(FILE *stream); 功能:fileno函数用于取得参数stream指定的文件流所使用的文件描述符。文件描述符是一个非负整数,用于在底层…

C/C++开发,opencv光流法跟踪特征点

目录 一、Lucas-Kanade光流法 1.1cv::ORB特征点提取方法 1.2 cv::calcOpticalFlowPyrLK函数 二、完整案例实现 2.1 程序代码 2.2 程序编译及输出 2.3 读取视频文件方式补充 一、Lucas-Kanade光流法 在 OpenCV 中,使用 特征检测器(例如ORB ,Oriented FAST and…

基于深度学习的地磁活动、扰动预测模型

注:包括SYM-H Index和Storm Intensity index A transformer-based framework for predicting geomagnetic indices with uncertainty quantification Journal of Intelligent Information Systems 18 November 2023 A transformer-based framework for predicting…

IP地址怎样实现安全的HTTPS访问?

IP实现HTTPS访问是一个涉及证书申请、服务器配置及网络安全的过程。以下是实现IP实现HTTPS访问的详细步骤: 公网IP地址的重要性:要实现HTTPS访问,必须拥有一个公网IP地址,这是从互联网直接访问网站的基础条件。 管理权限的必要性&…

高效批量提取PPT幻灯片中图片的方法

处理包含大量图片的PPT(PowerPoint)幻灯片已成为许多专业人士的日常任务之一。然而,手动从每张幻灯片中逐一提取图片不仅耗时耗力,还容易出错。为了提升工作效率,减少重复劳动,探索并实现一种高效批量提取P…

“网络信息安全”你真的了解吗?(非常详细)零基础入门到精通,收藏这一篇就够了

全面了解网络信息安全 01 导语: 在数字化浪潮中,我们每个人的生活都越来越依赖于网络。银行账户、个人隐私、企业机密——几乎所有的敏感信息都在网络上流转。随之而来的是不断升级的网络攻击和诈骗手段。本文将深入探讨网络信息安全的意义、挑战、防…

Candance Allegro 入门教程笔记:Cadence Allegro 17.4安装教程

文章目录 一、安装Cadence Allegro 17.4 安装包二、安装Candance Allegro Manager三、安装007号 补丁四、用阿狸狗破戒大师 破戒Candance Allegro 17.4软件 Cadence Allegro QQ交流学习裙:173416628 凡亿教育的Candance Allegro 17.4基础教程 小哥Cadence Allegro …

SSM伊犁旅游攻略网站—计算机毕业设计源码15961

目 录 摘要 1 绪论 1.1 开发背景 1.2开发意义 1.3ssm框架 1.4论文结构与章节安排 2 2 伊犁旅游攻略网站系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3数据删除流程 2.3 系统功能分析 2.3.1功能性分析 2.3.2非功能性分析…

48天笔试训练错题——day43

目录 选择题 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 编程题 1. 求和 选择题 1. synflood 是 syn 泛洪攻击。有一个恶意主机,伪造大量的 IP 地址,然后给服务器发送 SYN 请求,但是不进行第三次握手的回复,这样就会消耗服务器…

DITA发布MS Word样式定制

- 1 - 概述 上一期我们介绍了摩拿科技针对DITA发布PDF样式定制。 发布PDF通常能够满足大部分手册内容查看的需求,但是有时候公司的销售和服务部门的同事或者客户想要一个能修改的文件,这样可以做二次加工并生成自己想要的输出。这时候MS Word就能胜任…

SpringBoot中使用过滤器filter

过滤器Filter 在 Java 中,Filter(过滤器)是一种用于对请求进行预处理和后处理的机制。 工作原理: 当一个请求到达服务器时,会先经过一系列配置好的过滤器。过滤器可以检查请求的参数、头信息、请求体等内容&#xf…

buuctf CrackRTF (补)

另一种做题方式。 前言:学习笔记。 例题学习,涨大知识。 深入刨析,学习。 常规什么的这次就不写了,这篇wp主要是用于学习,以及分析。 以资料,代码理解,编程思维、编程手法等为主。 重在分析学…

php常见代码执行函数和常见系统命令执行函数。

PHP中常见代码执行函数: array_map() eval() assert() preg_replace() call_user_func() $a($b)动态函数 PHP中常见系统命令执行函数: system() exec() shell_exec() passthru() popen() 反引号"" 命令执行危险函数之assert函数…

成都云飞浩容文化传媒有限公司正规吗怎么样?

在数字经济的浪潮中,电商行业如日中天,成为推动经济增长的重要引擎。在这片蓝海中,如何脱颖而出,实现品牌与销量的双重飞跃?成都云飞浩容文化传媒有限公司,作为电商服务领域的佼佼者,正以专业的…

Echarts图表官网打开太慢怎么办?echarts.apache.org

1.ping官网,获取ip 使用 WIN R 输入cmd 进入命令控制台,ping 官网地址:echarts.apache.org 获取到的IP是 151.101.2.132 2.给hosts文件添加内容 使用文本编辑工具或编译器 打开 C:\Windows\System32\drivers\etc\hosts 文件,在最…

Linux基础知识之管理用户密码

往期系列内容回顾: Linux基础知识之Shell命令行及终端中的快捷键 Linux基础知识之man手册页_man 手册页-CSDN博客 Linux基础知识之Linux文件系统权限-CSDN博客 Linux基础知识之使用 Shell 扩展匹配文件名-CSDN博客 shadow 密码和密码策略 用户密码是Linux用户…

文件目录。

1、转换函数fileno和fdopen 一、文件目录 打开目录:opendir 读取目录:readdir:返回值是info(目录中的一项内容),type表示类型是目录。 关闭目录:closedir 输出的是所有文件,包括隐…