这门课的主题很明确:用 C++ 在 Linux 上从零搭一个高性能网络编程框架,并且把 WebRTC 的屏幕共享场景当作验证载体。它不是那种把 API 念一遍的课,而是把「事件驱动」这条主线贯穿到底——从 epoll 的封装、Reactor 模型的分层,到连接生命周期管理、缓冲区设计、线程模型,再到用这套框架去支撑一个真实的拉流项目。对已经写过 C++、但没系统做过网络库的开发者来说,这种「自己造一遍轮子」的路径,比直接读 muduo 源码更容易建立结构感。
技术栈与运行时环境
核心语言是 C++11/14,构建工具大概率是 CMake,运行平台锁定 Linux。网络层依赖 epoll 作为 IO 多路复用底座,这是 Linux 高并发场景的默认选择,也是理解 Reactor 模式最直接的入口。课程中段引入 WebRTC 相关部分,会涉及信令交互、SDP 协商、拉流端的媒体数据传输,这部分在纯网络框架之上叠了一层实时通信协议,能看出框架的扩展点设计在哪里。如果你之前只接触过 select/poll,这里会有一个明显的认知切换:epoll 的边沿触发与水平触发差异,直接决定你的读缓冲区怎么写、什么时候该把 fd 从事件循环里摘掉。
框架结构:从事件循环到连接管理
一个能用的网络框架,拆开看无非几块:EventLoop 负责跑事件循环,Poller/Epoll 负责把内核事件翻译成回调,Channel 把 fd 和感兴趣的事件绑在一起,Acceptor 处理新连接,TcpConnection 管一条连接上的读写与关闭,Buffer 解决粘包和半包。这门课的价值在于它会带你把这些类一个个写出来,而不是给你一个成品库让你调。写的过程中你会被迫面对几个真实问题:回调在哪个线程执行、跨线程唤醒怎么用 eventfd、连接销毁时对象生命周期怎么保证、定时器怎么和事件循环共用同一套超时机制。这些问题在只看视频不动手时很容易被跳过,但恰恰是框架能不能扛住压力的分水岭。
WebRTC 屏幕共享作为落地场景
课程后半段用屏幕共享项目来验证框架,实现 WebRTC 拉流。这一步的意义不只是「多学一个协议」,而是让你看到:前面手写的网络层如何承载一个带信令、带媒体协商、带持续数据流的真实应用。UI 界面、拉流逻辑、信令交换这几块拆开看都是可以单独拿出来复用的模块。如果你做的是音视频或实时通信方向,这部分的结构可以直接对照你现有的项目,看哪些层次是缺失的。
怎么用这份资料
- 不要只看视频。每讲完一个类,自己默写一遍接口,再对照源码修正,尤其是 Buffer 的读写指针设计和 Channel 的事件回调注册。
- 把 EventLoop 和 Epoll 的配合画成时序图,标清楚哪些操作在主线程、哪些在工作线程,跨线程唤醒的路径要能自己讲出来。
- WebRTC 部分先跑通信令流程,再去看拉流实现,否则容易被 SDP 和 ICE 的细节淹没。
- 框架写完后,压测一下并发连接数,观察 CPU 和内存曲线,比任何理论解释都更能说明设计取舍。
整体上,这是一份适合「边看边写、写完再对照」的工程型资料。它不承诺让你速成,但如果你肯跟着把每个模块落成代码,最后手里会多一个能改、能扩展、能塞进自己项目的网络底座,而不是一堆看完就忘的知识点。
🔥 mksz754-基于C++从0到1手写Linux高性能网络编程框架
深入浅出,手写网络编程框架
编辑点评
从WebRTC技术到事件驱动网络编程,全面掌握Linux高性能网络编程框架设计与实现。
⭐ 编辑推荐
本课程深入浅出,带你从0到1手写Linux高性能网络编程框架,涵盖WebRTC技术、事件驱动编程等多个领域。
✨ 课程亮点
课程目录
📁 第4章 带你快速入门WebRTC技术
4-9 屏幕共享项目-实现WebRTC拉流(二)(1).mp4 [73.8 MB]
4-9 屏幕共享项目-实现WebRTC拉流(二).mp4 [73.8 MB]
4-5 屏幕共享项目-设计UI界面【公重号:CunWorkNotes】.mp4 [51.1 MB]
4-10 屏幕共享项目-实现WebRTC拉流(三).mp4 [53.4 MB]
4-2 WebRTC P2P通信流程.mp4 [59.0 MB]
4-11 屏幕共享项目-实现停止推流和拉流【不易整理‖请关注:CunWorkNoteS】.mp4 [69.3 MB]
4-4 屏幕共享项目-获取证书和支持https访问.mp4 [84.2 MB]
4-8 屏幕共享项目-实现WebRTC拉流(一).mp4 [49.9 MB]
4-12 本章小结【不易整理‖请关注:CunWorkNoteS】.mp4 [37.7 MB]
4-6 屏幕共享项目-获取屏幕共享视频流【公重号:CunWorkNotes】.mp4 [52.3 MB]
4-1 开发环境准备.mp4 [119.9 MB]
4-7 屏幕共享项目-实现WebRTC推流.mp4 [144.0 MB]
4-3 屏幕共享项目-用golang搭建静态资源服务.mp4 [120.9 MB]
4-8 屏幕共享项目-实现WebRTC拉流(一)(1).mp4 [49.9 MB]
📁 第5章 轻量级http开发框架的设计和实现
5-11 利用conf优化框架实现.mp4 [49.1 MB]
5-12 支持https和静态资源访问.mp4 [126.8 MB]
5-7 设计框架ComLog类.mp4 [81.9 MB]
5-2 WebRTC推流SDP交换模型.mp4 [71.9 MB]
5-17 WebRTC推流信令请求参数解析和异常处理(二).mp4 [95.5 MB]
5-4 轻量级http基础框架设计和实现(二).mp4 [95.3 MB]
5-5 引入google的glog库【不易整理‖请关注:CunWorkNoteS】.mp4 [141.1 MB]
5-14 WebRTC推流端UI界面设计(二)【更多精选‖公众号:CunWorknotes】 .mp4 [117.3 MB]
5-9 添加统计耗时功能.mp4 [96.0 MB]
5-13 WebRTC推流端UI界面设计(一).mp4 [103.0 MB]
5-8 填充通用日志字段信息.mp4 [106.0 MB]
5-15 WebRTC推流信令请求的发送和处理.mp4 [96.0 MB]
5-1 本章导学【不易整理‖请关注:CunWorkNoteS】.mp4 [7.3 MB]
5-3 轻量级http基础框架设计和实现(一).mp4 [103.9 MB]
5-6 丰富和完善log组件功能【不易整理‖请关注:CunWorkNoteS】.mp4 [102.6 MB]
5-10 添加conf组件【优质资源‖关注:cunWorkNotes 解锁】.mp4 [86.1 MB]
5-16 WebRTC推流信令请求参数解析和异常处理(一).mp4 [45.1 MB]
📁 第10章 事件驱动网络编程框架--多Server协同工作,掌握多Server的协同处理技术
10-2 创建RtcServer类.mp4 [145.2 MB]
10-4 处理SignalingWorker发送的消息.mp4 [37.7 MB]
10-1 本章核心内容【优质资源‖关注:cunWorkNotes 解锁】.mp4 [10.3 MB]
10-8 RtcWorker返回响应结果.mp4 [167.5 MB]
10-12 信令服务返回处理结果给客户端.mp4 [55.4 MB]
10-10 SignalingWorker发送响应包【不易整理‖请关注:CunWorkNoteS】.mp4 [194.3 MB]
10-7 分配请求给RtcWorker进行处理【持续更新‖免费提供:CunworknoteS】.mp4 [192.8 MB]
10-9 SignalingWorker构造响应包.mp4 [135.7 MB]
10-3 实现RtcServer的启动和停止【更多精选‖公众号:CunWorknotes】 .mp4 [118.0 MB]
10-11 信令服务读取响应结果.mp4 [103.8 MB]
10-6 实现RtcWorker的消息处理.mp4 [145.2 MB]
10-5 创建RtcWorker类【资源精选‖更多关注:CunworkNotes】.mp4 [116.1 MB]
📁 第9章 事件驱动网络编程框架--网络数据读写,掌握非阻塞网络IO的读写技术
9-1 创建SignalingWorker【资源精选‖更多关注:CunworkNotes】.mp4 [86.8 MB]
9-6 监听TcpConnection读事件.mp4 [91.7 MB]
9-3 分发新连接给SignalingWorker进行处理.mp4 [151.6 MB]
9-12 解析json格式的数据体【整理不易‖记得关注:CunWorKNotes】.mp4 [146.3 MB]
9-5 创建TcpConnection类【更多精选‖公众号:CunWorknotes】 .mp4 [148.0 MB]
9-13 根据命令号处理解析后的数据.mp4 [52.9 MB]
9-8 从TCP连接读取协议头.mp4 [118.3 MB]
9-2 完善SignalingWorker并进行管理【整理不易‖记得关注:CunWorKNotes】.mp4 [134.5 MB]
9-9 从TCP连接读取消息体.mp4 [203.4 MB]
9-7 RPC客户端写入信令转发数据【资源精选‖更多关注:CunworkNotes】.mp4 [76.5 MB]
9-4 无锁队列的原理和实现【公重号:CunWorkNotes】.mp4 [136.1 MB]
9-11 TCP连接资源清理.mp4 [19.2 MB]
9-10 处理TCP连接超时情况-【公重号:CunWorkNotes】.mp4 [171.1 MB]
📁 第8章 事件驱动网络编程框架--事件循环,掌握事件循环的综合运用技巧
8-3 libev快速入门.mp4 [60.9 MB]
8-7 实现停止和删除IO事件【更多精选‖公众号:CunWorknotes】 .mp4 [30.5 MB]
8-9 向TCP Server添加事件循环.mp4 [123.8 MB]
8-10 启动和停止TCP Server.mp4 [203.5 MB]
8-2 创建TCP Server.mp4 [128.0 MB]
8-5 实现创建IO事件.mp4 [74.6 MB]
8-1 本章介绍和信令服务框架搭建.mp4 [152.3 MB]
8-4 封装EventLoop类【更多精选‖公众号:CunWorknotes】 .mp4 [139.4 MB]
8-6 实现启动IO事件.mp4 [46.8 MB]
8-8 实现定时器事件.mp4 [99.4 MB]
📁 第3章 如何自主研发一套网络框架?
3-2 针对WebRTC实时音视频场景如何设计一套服务框架?【更多精选‖公众号:CunWorknotes】 .mp4 [10.4 MB]
3-1 自主研发网络框架需要考虑哪些问题?【持续更新‖免费提供:CunworknoteS】.mp4 [21.7 MB]
📁 第11章 其他场景如何使用框架提升开发效率呢?
11-2 音视频实时分发服务场景的运用解析.mp4 [6.4 MB]
11-1 长连接服务场景的运用解析.mp4 [30.2 MB]
📁 第1章 事件驱动网络编程框架--课程导学
1-1 课程导学.mp4 [42.1 MB]
1-2 如何快速进阶后端高级工程师【整理不易‖记得关注:CunWorKNotes】.mp4 [46.3 MB]
1-3 课程效果演示.mp4 [78.4 MB]
📁 第2章 事件驱动编程的基础理论和典型应用分析
2-4 Nginx事件驱动模型解析.mp4 [11.5 MB]
2-1 网络编程中的同步与异步、阻塞与非阻塞【优质资源‖关注:cunWorkNotes 解锁】.mp4 [38.9 MB]
2-2 什么是事件驱动编程?【优质资源‖关注:cunWorkNotes 解锁】.mp4 [19.7 MB]
2-3 事件驱动编程优缺点分析.mp4 [13.1 MB]
2-5 Redis事件驱动模型解析.mp4 [18.2 MB]
📁 第12章 课程回顾与总结
12-1 课程回顾与总结.mp4 [60.9 MB]
📁 第6章 服务间RPC通信协议的设计和实现
6-3 RPC Client接口设计和功能实现(一).mp4 [148.0 MB]
6-6 本章小结.mp4 [35.5 MB]
6-5 RPC Client负载均衡实现【更多精选‖公众号:CunWorknotes】 .mp4 [122.3 MB]
6-1 什么是RPC.mp4 [22.5 MB]
6-2 RPC通信协议设计【持续更新‖免费提供:CunworknoteS】.mp4 [72.1 MB]
6-4 RPC Client接口设计和功能实现(二).mp4 [60.6 MB]
📁 第7章 事件驱动网络编程框架--基础组件,掌握标准后台服务的核心构成
7-9 实现log异步写入文件(二).mp4 [158.5 MB]
7-3 搭建音视频分发服务.mp4 [138.9 MB]
7-8 实现log异步写入文件(一).mp4 [110.4 MB]
7-6 添加log组件(一).mp4 [174.9 MB]
7-10 解决log写入文件失败的问题.mp4 [49.5 MB]
7-1 事件驱动编程基本概念及其特点介绍.mp4 [49.7 MB]
7-7 添加log组件(二)【整理不易‖记得关注:CunWorKNotes】.mp4 [164.1 MB]
7-5 解析YAML格式的配置文件【整理不易‖记得关注:CunWorKNotes】.mp4 [119.9 MB]
7-2 音视频分发服务的工作模型设计【资源精选‖更多关注:CunworkNotes】.mp4 [30.7 MB]
7-4 添加conf组件.mp4 [96.9 MB]适合人群
- 后端开发工程师
- 网络编程爱好者
🎯 学习收获
- 掌握Linux网络编程
- 精通事件驱动编程
- 提升开发效率
🎉 祝您学习愉快!



![大疆维修,无人机维修教程[66.30GB]](/_next/image?url=%2Fapi%2Fuploads%2Fb6a69810-862f-479c-a529-d66880073ebc.jpg&w=1920&q=75)


