这门课的主题很明确:用 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技术、事件驱动编程等多个领域。

✨ 课程亮点

✦手写网络编程框架
✦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网络编程
  • 精通事件驱动编程
  • 提升开发效率

🎉 祝您学习愉快!