C++实现集群聊天服务器(一)

笔记参考腾讯课堂施磊老师课程:C++实现集群聊天服务器

技术栈

  • Json序列化和反序列化
  • muduo网络库开发
  • nginx源码编译安装和环境部署
  • nginx的tcp负载均衡器配置
  • redis缓存服务器编程实践
  • 基于发布-订阅的服务器中间件redis消息队列编程实践
  • MySQL数据库编程
  • CMake构建编译环境
  • Github托管项目

项目需求

  1. 客户端新用户注册
  2. 客户端用户登录
  3. 添加好友和添加群组
  4. 好友聊天
  5. 群组聊天
  6. 离线消息
  7. nginx配置tcp负载均衡
  8. 集群聊天系统支持客户端跨服务器通信

项目目标

  1. 掌握服务器的网络I/O模块,业务模块,数据模块分层的设计思想
  2. 掌握C++ muduo网络库的编程以及实现原理
  3. 掌握Json的编程应用
  4. 掌握nginx配置部署tcp负载均衡器的应用以及原理
  5. 掌握服务器中间件的应用场景和基于发布-订阅的redis编程实践以及应用原理
  6. 掌握CMake构建自动化编译环境
  7. 掌握Github管理项目

开发环境

  1. ubuntu linux环境
  2. 安装Json开发库
  3. 安装boost + muduo网络库开发环境,参考博客:
    https://blog.csdn.net/QIANGWEIYUAN/article/details/89023980
  4. 安装redis环境
  5. 安装mysql数据库环境
  6. 安装nginx
  7. 安装CMake环境

配置远程开发环境

windows+vscode配置远程linux开发环境

参考博客:https://blog.csdn.net/qq756684177/article/details/94236990

  1. linux系统运行sshd服务
  2. 在vscode上安装Remote Development插件,其依赖插件会自动安装
  3. 配置远程linux主机的信息
  4. 在vscode上开发远程连接linux

VS环境创建远程linux跨平台项目

参考博客:https://blog.csdn.net/QIANGWEIYUAN/article/details/89469717

vscode在linux环境下直接开发

网络搜索关键词


下载

链接: https://pan.baidu.com/s/1kXyXy5ct1OmIxu8uSfjS1g 提取码: 13gi


Json介绍

Json是一种轻量级的数据交换格式(也叫数据序列化方式)。Json采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 Json 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。


一个优秀的Json三方库

JSON for Modern C++ 是一个由德国大牛 nlohmann 编写的在 C++ 下使用的 JSON 库。

具有以下特点:

  • 直观的语法
  • 整个代码由一个头文件组成json.hpp,没有子项目,没有依赖关系,没有复杂的构建系统,使用起来非常方便
  • 使用 C++ 11 标准编写
  • 使用 json 像使用 STL 容器一样
  • STL 和 json 容器之间可以相互转换
  • 严谨的测试:所有类都经过严格的单元测试,覆盖了 100% 的代码,包括所有特殊的行为。此外,还检查了 Valgrind 是否有内存泄漏。为了保持高质量,该项目遵循核心基础设施倡议(CII)的最佳实践

包含Json头文件

在网络中,常用的数据传输序列化格式有 XML、Json、ProtoBuf,在公司级别的项目中,大量的在使用 ProtoBuf 作为数据系列化的方式,以其数据压缩编码传输,占用带宽小,同样的数据信息,是 Json 的 1/10,XML 的 1/20,但是使用起来比 Json 稍复杂一些,所以项目中我们选择常用的 Json 格式来打包传输数据。

下面列举一些项目中用到的有关 Json 数据的序列化和反序列化代码,仅供参考!JSON for ModernC++这个三方库的使用非常简单,如下所示:

#include "json.hpp"
using json = nlohmann::json;

Json数据序列化

就是把我们想要打包的数据或者对象,直接处理成 Json 字符串。

1. 普通数据序列化

json js;
// 添加数组
js["id"] = {1,2,3,4,5}; 
// 添加key-value 
js["name"] = "zhang san"; 
// 添加对象 
js["msg"]["zhang san"] = "hello world"; 
js["msg"]["liu shuo"] = "hello china"; 
// 上面等同于下面这句一次性添加数组对象 
js["msg"] = {{"zhang san", "hello world"}, {"liu shuo", "hello china"}}; 
cout << js << endl; //string sendBuf = js.dump(); 将json数据对象序列化成json字符串sendBuf
                    //cout << sendBuf.c_str() << endl;

上面js对象的序列化结果是:
{"id":[1,2,3,4,5],"msg":{"liu shuo":"hello china","zhang san":"hello world"},"name":"zhang san"}

2. 容器序列化

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C集群聊天服务器视频下载是指使用C语言进行开发的集群聊天服务器程序,该程序具备视频下载功能。集群聊天服务器是一种用于群组通信的服务器程序,可以实现多个用户之间的文本、语音、视频等多种形式的交流。 在C语言中开发集群聊天服务器视频下载功能需要使用网络编程相关的API,如Socket编程。通过Socket编程,可以在服务器端建立一个监听端口,等待客户端的连接请求。一旦客户端连接成功,服务器可以和客户端进行双向的数据传输。 为了支持视频下载功能,服务器端需要提供相应的视频资源,并通过Socket将视频内容传输给客户端。客户端在接收到视频数据后,可以将数据保存成视频文件。视频文件可以通过常见的视频播放器进行播放。 在集群聊天服务器中,可以通过添加一些额外的功能来实现视频下载功能的完善。例如,可以提供视频分类和搜索功能,让用户可以更方便地找到自己需要的视频资源。还可以加入断点续传的功能,当下载过程中出现网络中断或其他异常情况时,可以在恢复连接后继续下载,避免重新下载整个视频文件。 总结起来,C集群聊天服务器视频下载是一种基于C语言开发的服务器程序,它可以实现多人聊天、视频传输和视频下载等功能。通过Socket编程,服务器和客户端之间可以进行双向的数据传输,从而实现视频数据的传输和保存。同时,可以通过添加一些额外的功能来提高视频下载的体验,如视频分类、搜索和断点续传等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小浩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值