C++百万并发网络通信引擎架构与实现(Socket、全栈、跨平
教程名称: C++百万并发网络通信引擎架构与实现(Socket、全栈、跨平台)
教程目录: │ 1-1.课程介绍 │ 1-10.在虚拟机中安装MacOS10.12系统 │ 1-11.在MacOS10.12系统中安装Xcode9开发工具 │ 1-12.使用Xcode9.1编写一个MacOSC++程序 │ 1-13.在Ubuntu中编写一个linuxC++程序 │ 1-14.在虚拟机中安装Linux-ubuntu-16.04桌面系统 │ 1-15.安装配置SVN代码管理工具1 │ 1-16.安装配置SVN代码管理工具2 │ 1-2.C++百万并发网络通信引擎演示 │ 1-3.开发工具介绍 │ 1-4.本章内容介绍-搭建多平台下C++开发环境 │ 1-5.建立WindowsC++开发环境 │ 1-6.建立一个易于管理的WindowsC++工程 │ 1-7.VS2015C++程序常用调试方法 │ 1-8.常用虚拟机软件简介 │ 1-9.安装VMwarePlayer12并解锁MacOS系统 │ 2-1.本章内容介绍-Socket网络通信基础 │ 2-10.网络报文的数据格式定义及使用1 │ 2-11.网络报文的数据格式定义及使用2 │ 2-12.网络报文的数据格式定义及使用3 │ 2-13.网络报文的数据格式定义及使用4 │ 2-14.将多次收发报文数据升级为一次收发1 │ 2-15.将多次收发报文数据升级为一次收发2 │ 2-16.答疑解惑1:网络消息接收长度问题 │ 2-17.服务端升级为select模型处理多客户端1 │ 2-18.服务端升级为select模型处理多客户端2 │ 2-19.服务端升级为select模型处理多客户端3 │ 2-2.Socket基础Api(TCP篇)介绍 │ 2-20.服务端升级为select模型处理多客户端4 │ 2-21.将服务端select模型设置为非阻塞,处理更多业务 │ 2-22.客户端升级为select网络模型1 │ 2-23.客户端升级为select网络模型2 │ 2-24.客户端升级为select网络模型3 │ 2-25.为客户端添加输入线程(Thread) │ 2-26.客户端升级1.4跨平台支持Win、Linux、MacOS1 │ 2-27.客户端升级1.4跨平台支持Win、Linux、MacOS2 │ 2-28.客户端升级1.4跨平台支持Win、Linux、MacOS3 │ 2-29.客户端升级1.4跨平台支持Win、Linux、MacOS4 │ 2-3.HelloSocket │ 2-30.客户端升级1.4跨平台支持Win、Linux、MacOS5 │ 2-31.服务端升级1.4跨平台支持Win、Linux、MacOS1 │ 2-32.服务端升级1.4跨平台支持Win、Linux、MacOS2 │ 2-33.服务端升级1.4跨平台支持Win、Linux、MacOS3 │ 2-34.服务端升级1.4跨平台支持Win、Linux、MacOS4 │ 2-35.服务端升级1.4跨平台支持Win、Linux、MacOS5 │ 2-36.服务端升级1.4跨平台支持Win、Linux、MacOS6 │ 2-37.服务端升级1.4跨平台支持Win、Linux、MacOS7 │ 2-38.服务端升级1.4跨平台支持Win、Linux、MacOS8 │ 2-39.客户端1.5,封装Client类,同时与多个服务端通信1 │ 2-4.用SocketAPI6步建立TCP服务端 │ 2-40.客户端1.5,封装Client类,同时与多个服务端通信2 │ 2-41.客户端1.5,封装Client类,同时与多个服务端通信3 │ 2-42.客户端1.5,封装Client类,同时与多个服务端通信4 │ 2-43.验证客户端1.5同时与多个不同平台下的服务端通信1 │ 2-44.验证客户端1.5同时与多个不同平台下的服务端通信2 │ 2-45.验证客户端1.5同时与多个不同平台下的服务端通信3 │ 2-46.验证客户端1.5同时与多个不同平台下的服务端通信4 │ 2-47.服务端1.5,封装Server类,创建多个Server服务1 │ 2-48.服务端1.5,封装Server类,创建多个Server服务2 │ 2-49.服务端1.5,封装Server类,创建多个Server服务3 │ 2-5.用SocketAPI4步建立客户端 │ 2-50.服务端1.5,封装Server类,创建多个Server服务4 │ 2-51.在内外网中验证、测试粘包原因1 │ 2-52.在内外网中验证、测试粘包原因2 │ 2-53.在内外网中验证、测试粘包原因3 │ 2-54.客户端1.6,解决客户端粘包1 │ 2-55.客户端1.6,解决客户端粘包2 │ 2-56.客户端1.6,解决客户端粘包3 │ 2-57.服务端1.6,解决服务端粘包1 │ 2-58.服务端1.6,解决服务端粘包2 │ 2-59.服务端1.6,解决服务端粘包3 │ 2-6.建立能持续处理请求的CS网络程序 │ 2-60.服务端1.6,解决服务端粘包4 │ 2-61.解决粘包测试-Win10专业版-每秒收发1Gb数据 │ 2-62.解决粘包测试-Linux-ubuntu-16.04系统 │ 2-63.解决粘包测试-外网云服务器-远程数据传输 │ 2-64.突破Windows下select64限制1 │ 2-65.突破Windows下select64限制2 │ 2-66.添加高精度计时器测量处理能力1 │ 2-67.添加高精度计时器测量处理能力2 │ 2-68.单线程select模型10000连接测试 │ 2-69.多线程与单线程网络程序架构简介 │ 2-7.用SVN来管理我们的教学项目 │ 2-70.多线程-基本概念简介 │ 2-71.多线程-创建线程,两种启动线程方法的差异 │ 2-72.多线程-传递参数给入口函数,创建线程数组 │ 2-73.多线程-锁与临界区域 │ 2-74.多线程-锁的消耗,通过简单并行计算示例测试 │ 2-75.多线程-自解锁 │ 2-76.多线程-原子操作 │ 2-77.多线程-基本概念总结 │ 2-78.定个小目标,1万连接每秒处理200万个数据包1 │ 2-79.定个小目标,1万连接每秒处理200万个数据包2 │ 2-8.发送结构化的网络消息数据1 │ 2-80.客户端1.7_1,多线程分组模拟高频并发数据1 │ 2-81.客户端1.7_2,多线程分组模拟高频并发数据2 │ 2-82.服务端单线程模式下性能瓶颈测试 │ 2-83.经典设计模式-生产者与消费者模式 │ 2-84.服务端1.7_1,分离新客户端连接与消息处理业务 │ 2-85.服务端1.7_2,为消息处理线程添加新客户端缓冲队列 │ 2-86.服务端1.7_3,建立消息处理线程 │ 2-87.服务端1.7_4,将新客户端分配给客户数量最少的消息线程 │ 2-88.服务端1.7_5,消息处理线程在无客户端时休眠1毫秒 │ 2-89.服务端1.7_6,为消息处理线程添加每秒收包计数 │ 2-9.发送结构化的网络消息数据2 │ 2-90.服务端1.7_7,事件通知,有客户端退出 │ 2-91.服务端1.7_8,测试退出事件 │ 2-92.服务端1.7_9,警告:内存不足 │ 2-93.客户端1.7_3,提高发送频率,每次发送10个消息包 │ 2-94.1.7版,小目标达成,1万连接每秒处理200万包验证测试 │ 2-95.小目标达成,注解、补充、代码调整1 │ 2-96.小目标达成,注解、补充、代码调整2 │ 2-97.小目标达成,注解、补充、代码调整3 │ 2-98.小目标达成,注解、补充、代码调整4 │ 2-99.小目标达成,实现自定义Server │ 3-1.本章内容介绍:一步一步建立高性能服务器 │ 3-10.SocketAPI极限测试之send1 │ 3-11.SocketAPI极限测试之send2 │ 3-12.SocketAPI极限测试之send3 │ 3-13.CellServer数据收发的性能瓶颈1 │ 3-14.CellServer数据收发的性能瓶颈2 │ 3-15.CellServer数据收发的性能瓶颈3 │ 3-16.定时定量发送数据 │ 3-17.添加发送缓冲区-定量发送1 │ 3-18.添加发送缓冲区-定量发送2 │ 3-19.Server消息接收与发送分离1 │ 3-2.Server1.7_select模型接收数据性能瓶颈与优化1 │ 3-20.Server消息接收与发送分离2 │ 3-21.Server消息接收与发送分离3 │ 3-22.Server消息接收与发送分离4 │ 3-23.Server消息接收与发送分离5 │ 3-24.Server消息接收与发送分离6 │ 3-25.内存管理-内存池设计1 │ 3-26.内存管理-内存池设计2 │ 3-27.内存管理-内存池设计3 │ 3-28.内存池实现1-重载new运算符 │ 3-29.内存池实现2 │ 3-3.Server1.7_select模型接收数据性能瓶颈与优化2 │ 3-30.内存池实现3 │ 3-31.内存池实现4-初始化内存池 │ 3-32.内存池实现5-实现内存申请 │ 3-33.内存池实现-6-实现内存释放 │ 3-34.内存池实现-7 │ 3-35.内存池实现-8 │ 3-36.内存池实现-9-验证调试 │ 3-37.内存池实现-10-验证调试 │ 3-38.内存池实现-11 │ 3-39.内存池实现-12 │ 3-4.Server1.7_select模型接收数据性能瓶颈与优化3 │ 3-40.内存池实现-13-支持多线程 │ 3-41.内存池实现-14-在Server应用 │ 3-42.内存管理-智能指针1 │ 3-43.内存管理-智能指针2 │ 3-44.内存管理-智能指针3 │ 3-45.内存管理-智能指针4 │ 3-46.内存管理-智能指针5 │ 3-47.内存管理-智能指针6 │ 3-48.内存管理-智能指针7 │ 3-49.内存管理-智能指针8 │ 3-5.Server1.7_select模型接收数据性能瓶颈与优化4 │ 3-50.内存管理-智能指针9 │ 3-51.内存管理-对象池1 │ 3-52.内存管理-对象池2 │ 3-53.内存管理-对象池3 │ 3-54.内存管理-对象池4 │ 3-55.内存管理-对象池5 │ 3-56.内存管理-对象池6 │ 3-57.内存管理-对象池7 │ 3-58.内存管理-对象池8 │ 3-59.内存管理-总结 │ 3-6.SocketAPI极限测试,添加recv和send计数 │ 3-60.回退到无内存管理 │ 3-61.测试-Linux-ubuntu-16.04系统 │ 3-62.测试-MacOS 10.12系统 │ 3-63.优化代码结构1 │ 3-64.优化代码结构2-修复发送BUG、减小收发缓冲 │ 3-65.C++11的新特性function与lambda │ 3-66.使用function与lambda优化TaskServer │ 3-67.心跳检测1 │ 3-68.心跳检测2 │ 3-69.心跳检测3 │ 3-7.SocketAPI极限测试之recv1单线程接收测试 │ 3-70.定时发送缓存数据1 │ 3-71.定时发送缓存数据2 │ 3-72.并发多线程Server安全退出问题分析1 │ 3-73.并发多线程Server安全退出问题分析2 │ 3-74.实现简单的信号等待机制来控制线程退出 │ 3-75.封装简单的信号量来控制Sever的关闭 │ 3-76.使用condition_variable实现更安全的信号量 │ 3-77.优化线程控制1 │ 3-78.优化线程控制2-源码已改为utf8+bom字符编码 │ 3-79.Server2.0_select模型异步发送数据1_utf8 │ 3-8.SocketAPI极限测试之recv2多线程接收测试 │ 3-80.Server2.0_select模型异步发送数据2 │ 3-81.Server2.0_select模型异步发送数据3 │ 3-82.Server2.0_select模型异步发送数据5 │ 3-83.Server2.0_select模型异步发送数据4 │ 3-84.select模型异步发送6_Linux与MacOS测试 │ 3-85.Server2.1-分离消息缓冲区1 │ 3-86.Server2.1-分离消息缓冲区2 │ 3-87.Server2.1-分离消息缓冲区3 │ 3-88.Server2.1-分离消息缓冲区4 │ 3-89.Server2.1-添加运行日志记录1 │ 3-9.SocketAPI极限测试之recv3阿里云服务器 │ 3-90.Server2.1-添加运行日志记录2 │ 3-91.Server2.1-添加运行日志记录3 │ 3-92.Server2.1-分离网络环境启动与关闭 │ 3-93.Server2.1_Linux与MacOS测试 │ 4-1.本章内容介绍-多平台下的客户端网络通信 │ 4-10.字节流5-写入数组与字符串 │ 4-11.字节流6-读取基础类型 │ 4-12.字节流7-读取数组和字符串 │ 4-13.字节流8-读写测试 │ 4-14.字节流9-分类收发消息流 │ 4-15.字节流10-使用消息流传输数据 │ 4-16.字节流11-有三段补充 │ 4-17.在Unity中使用我们的通信引擎 │ 4-18.Unity_C++插件应用基础1 │ 4-19.Unity_C++插件应用基础2 │ 4-2.为前后端建立通用代码库 │ 4-20.Unity_封装插件1_Windows │ 4-21.Unity_封装插件2_Windows │ 4-22.Unity_封装插件3_Windows │ 4-23.Unity_封装插件4_Windows │ 4-24.Unity_封装插件5_连接服务器 │ 4-25.Unity_C#自定义收发字节流数据 │ 4-26.Unity_C#写入流1-基础类型 │ 4-27.Unity_C#写入流2-数组与字符串 │ 4-28.Unity_C#写入流3-发送数据-使用测试 │ 4-29.Unity_C#解析流1-基础类型 │ 4-3.客户端升级为异步收发数据1 │ 4-30.Unity_C#解析流2-数组与字符串 │ 4-31.Unity_C#解析流3-解析数据-收发测试 │ 4-32.Unity_使用C++插件收发字节流数据 │ 4-33.Unity_C++插件导出字节流操作接口 │ 4-34.Unity_C++插件写入流数据 │ 4-35.Unity_C++插件解析流数据 │ 4-36.Unity_MacOSX_使用我们的通信引擎 │ 4-37.Unity_IOS_使用我们的通信引擎 │ 4-38.Unity_Android_编译C++动态库1 │ 4-39.Unity_Android_编译C++动态库2 │ 4-4.客户端升级为异步收发数据2 │ 4-40.Unity_Android_编译C++动态库3 │ 4-41.Unity_Android_使用我们的通信引擎1 │ 4-42.Unity_Android_使用我们的通信引擎2 │ 4-43.Unity_补充-释放流内存 │ 4-44.在cocos2d-x-cpp中使用我们的通信引擎 │ 4-45.在cocos2d-x-lua中使用我们的通信引擎 │ 4-46.cpp&lua交互1-基础知识 │ 4-47.cpp&lua交互2-接收和返回字符串 │ 4-48.cpp&lua交互3-注册回调函数 │ 4-49.cpp&lua交互4-tolua │ 4-5.使用字节流传输数据预览 │ 4-50.cpp&lua交互5-NativeClient │ 4-51.cpp&lua交互6-导出Client接口1 │ 4-52.cpp&lua交互7-导出Client接口2 │ 4-53.cpp&lua交互8-导出Client接口3 │ 4-54.cpp&lua交互9-导出Write接口 │ 4-55.cpp&lua交互10-导出Write接口2 │ 4-56.cpp&lua交互11-导出Read接口1 │ 4-57.cpp&lua交互12-导出Read接口2-收发验证 │ 4-58.cpp&lua交互13-封装Client-lua-class │ 4-59.cpp&lua交互14-封装写入流-lua-class │ 4-6.字节流1-建立字节流1 │ 4-60.cpp&lua交互15-封装解析流-收发验证 │ 4-7.字节流2-建立字节流2 │ 4-8.字节流3-建立字节流3 │ 4-9.字节流4-写入基础类型
|