自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 聊天服务器——全部业务

全部业务:心跳包注册登录获取好友列表查找用户加好友更新用户信息修改密码创建群获取指定群成员信息聊天信息群发信息。

2024-07-15 11:35:13 787

原创 聊天服务器——缓存器

缓存管理器里存放的是通知消息和聊天消息的缓存。因为用户会不在线,因此当用户不在线的时候,有朋友发消息或者群消息的时候,这些消息没办法传送给用户。因此先把消息传送到缓存器上,当用户上线的时候,会从缓存器上把缓存的消息推送给上线的用户。

2024-07-15 11:34:41 855

原创 聊天服务器——ClientSession

首先是二进制的读写器。

2024-07-15 11:34:04 736

原创 聊天服务器——封装服务器类

/保护m_mapclient的操作。class IMServer final //final表示该类不可能派生子类。//防止OnConnection在多个线程中插入出现问题。//此处就是两个括号,第一个表示构造对象,第二个表示()运算符重载。//为了控制生命周期,防止提前销毁,或者销毁之后,重复销毁。//TODO:处理这个连接,找到这个连接,然后进行关闭。//使用const_cast消除const限定符。//TODO:关闭连接的操作。//TODO:有问题的连接。

2024-07-15 11:32:52 321

原创 聊天服务器——Usermanager2

用户管理器就是把所有的用户都加载起来,存放着所有的用户,方便后续的查找等操作首先userid有一个边界,GROUPID_BOUBDARY。当小于这个边界时,userid就代表着是用户的id。当大于这个边界时,userid就代表着是群id。

2024-07-13 17:54:55 783

原创 聊天服务器——Usermanager

用户管理器就是把所有的用户都加载起来,存放着所有的用户,方便后续的查找等操作首先userid有一个边界,GROUPID_BOUBDARY。当小于这个边界时,userid就代表着是用户的id。当大于这个边界时,userid就代表着是群id。

2024-07-13 17:54:22 764

原创 聊天服务器——muduo库源码阅读笔记

时间戳主要是获得时间成员变量是时间函数是获得当前时间函数是把时间转换成人看的string//把时间秒换算成毫秒​return buf;

2024-07-13 17:53:36 828

原创 聊天服务器——mysql2

MySQLTool主要是封装了mysql的初始化连接、查询、执行connect函数就是连接,使用mysql_init来初始化数据库,使用mysql_real_connect来完成连接Query就是负责调用查询指令sqlmysql数据库查询后的结果是可以通过调用来获得结果并存到MYSQL_RES,然后获得数据库行和列的个数,并把结果都存放到QueryResult里使用mysql_query来执行sql语句。

2024-07-13 17:52:59 771

原创 聊天服务器——mysql

/mysql_real_query 与 mysql_query的区别就是 mysql_real_query遇到/0不会认为是结束。//用智能指针的好处是,不用再把里面查询的结果复制一次,而是直接返回,因为有时候数据量有点大。//true表示还有下一行,并且切换成功;false表示没有了。//blob real_query 遇到\0,不会认为是字符串结束了。//因为后面有sql.size()//如果前面有数据库了,先关掉。//mysql 默认是3306。//mysql的编码。mysql的cpp文件。

2024-07-13 17:52:28 729

原创 聊天服务器——服务器的开始

如何开启一个后台运行程序。

2024-07-13 17:51:48 684

原创 聊天服务器——Cmake入门

endif(NOT MYSQL_LIB)#必须进行匹配,否则会报错。#只是确认库存在或者设置库目录,是没有用的,需要链接进来才能起效果。#只是确认库存在或者设置库目录,是没有用的,需要链接进来才能起效果。if (NOT MYSQL_LIB)#NOT 只能用大写。# TODO: 如有需要,请添加测试并安装目标。# 将源代码添加到此项目的可执行文件。#将源代码添加到此项目的可执行文件。#这个宏,会影响编译参数。

2024-07-13 17:50:58 226

原创 聊天服务器——消息系统

std::unique_lock 是 C++11 提供的一个用于管理互斥锁的类,它提供了更灵活的锁管理功能,适用于各种多线程场景。(1)自动加锁和解锁// 自动加锁// 临界区代码} // 自动解锁使用 std::unique_lock 创建的对象,当其生命周期结束时(通常是在大括号的作用域结束时),会自动解锁,以确保互斥锁在不再需要时被释放。大括号是自己声明的。(2)手动加锁和解锁// 手动加锁// 临界区代码// 手动解锁。

2024-07-13 17:49:49 516

原创 聊天服务器——线程池

是在c++11中引入的一种智能指针,其特点是它所指向的资源具有共享性,即多个shared_ptr可以指向同一份资源。在c++中使用shared_ptr需要包含<memory>头文件。创建方式//new​//拷贝std::shared_ptr 是一种智能指针,它能够记录多少个 shared_ptr 共同指向一个对象,从而消除显示的调用 delete,当引用计数变为零的时候就会将对象自动删除。

2024-07-13 17:48:19 694

原创 聊天服务器——数据库模块

1:创建表​​2:插入数据3:高效的数据绑定因为sqlite3_exec执行效率低,而且只能执行单一的语句。因此我们采用采用这四个方式来结构化执行数据库操作。

2024-07-13 17:47:34 529

原创 聊天服务器——sqlite3

1、体积小2、支持window和Linux(包括Android),跨平台性很好3、采用的一种库函数的形式来提供数据库的服务4、文件性的数据库5、缺点:不能使用网络,单纯就是本地数据库。加密性能不是很好,安全性不足。

2024-07-13 17:46:40 1034

原创 聊天服务器——WTL

在项目属性里,链接器里的所有选项,子系统改成窗口然后在c/c++里,把CONSOLES改成WINDOWS然后把int main()改成从一个命令行程序改成一个窗口程序改成所有代码如下所示://从一个命令行程序改成一个窗口程序if (hRes!= 0)"));MSG msg;return 0;把wtl9的源码放入到目录里。

2024-07-13 17:44:26 590

原创 聊天服务器——ATL

WTL有一定的封装基础、不是mfc的框架、能够自己定制一些窗口行为WTL对模板编程有一点要求,对UI要求高。

2024-07-13 17:42:05 744

原创 聊天服务器——Xml

组件化解决的问题是拿来就用,不需要太多的额外编译,就能够进行适配仅仅引用头文件,加上一个可运行的程序,就可以到处使用,随时引用甚至不要头文件,直接拿来用COM里面有接口规范,可以通过接口查询方法本地COM服务,COM控件需要先注册后使用(dll库、ocx库)。这是微服务器,当创建对象时,它帮你创建,COM控件需要通过它来管理MSXML对应的头文件是<msxml2.h>

2024-07-13 17:41:26 910

原创 聊天服务器——Json

(2)右键Json,添加现有项,把Json压缩包里的文件全部添加上去,然后右键Json,仅用于项目,选择仅生成Json,这样就编译好了。然后再jsonstudy里,右键,选择”引用“,把刚才编译好的json静态库引用过去。项目配置:在属性里,C/C++里的预编译头里,选择不使用预编译头,删除预编译文件。为了快速而简洁的进行网络数据交互,各种各样的网络数据格式应运而生,从html到xml再到json。先进行一个简单的Jsonstudy小项目,学习一下Json,先进行项目编译。

2024-07-13 17:40:24 222

原创 小金聊天服务器项目——linux环境搭建

易栈项目

2024-03-08 11:18:52 357 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除