- 博客(9)
- 收藏
- 关注
原创 协程设计原理与汇编实现
同步 vs 异步是理解协程的起点。同步是指代码一行一行执行,上一步没做完下一步就卡住等待, 写起来符合直觉、顺着读就懂,但等待期间这条执行流什么都干不了,时间被浪费掉。异步是指不在 原地等,而是先登记一个回调函数,把操作发出去后立刻继续往下做别的事,等操作完成时系统再回头 调用那个回调,多个操作的等待时间因此被重叠到一起。异步最大的好处是性能高。异步/并行等于高性能,但异步有个致命代价:逻辑不好理解。异步逼你把一件事的前后两步拆成 现在做一半、回调里做另一半。
2026-06-03 22:53:12
447
原创 UDP可靠传输、ARQ、KCP、QUIC代码实现
相关的理论知识和实现在上一个博客,这个博客具体介绍代码实现~以下代码如果有引入ikcp.h 或 ikcp.c ,需要自行加入官方文件。
2026-06-02 09:27:30
524
1
原创 POSIX API和网络协议栈
本文深入解析了POSIX网络API的底层实现机制。文章首先指出所有高级语言的网络库最终都调用操作系统的POSIX socket API,然后详细拆解了socket()、bind()、listen()、connect()、accept()、send()、recv()等核心API在内核中的工作流程。重点讲解了TCP连接的三次握手(SYN、SYN+ACK、ACK)和四次挥手(FIN、ACK、FIN、ACK)过程,以及内核如何通过半连接队列和全连接队列管理连接状态等。
2026-05-25 15:22:00
688
原创 并发测试客户端的简单构建
本文介绍了一个用于测试服务端并发连接能力的压测客户端程序。该程序通过创建大量socket连接并利用epoll同时管理这些连接,可以模拟C10K/C100K级别的并发请求。核心实现包括:1) 轮询多个服务端端口以突破单机端口数限制;2) 设置非阻塞模式并注册到epoll事件循环;3) 批量处理连接建立和IO事件。程序通过控制连接创建速度,每处理1000个连接或达到34万连接上限时统计性能指标。这种设计能够有效验证服务端的承载能力,适用于高并发场景的性能测试。
2026-05-24 20:22:51
297
原创 【学习笔记】基于reactor实现webserver和websocket
本文介绍了一个基于Reactor模式的WebSocket服务器实现,主要包含三个核心模块:reactor.c负责事件驱动和网络I/O处理,webserver.c处理HTTP协议,websocket.c实现WebSocket协议。服务器使用epoll进行多路复用,支持同时监听多个端口,通过回调函数处理连接事件。WebSocket实现分为握手阶段(基于HTTP协议升级)和数据传输阶段(二进制帧格式),包含帧头解析、掩码处理、数据编解码等功能。
2026-05-23 18:01:19
507
原创 【学习笔记】从零开始学习Reactor网络服务器设计模式
本文实现了一个基于epoll的单线程Reactor模型网络服务器。Reactor模式通过事件驱动机制将网络IO与业务逻辑解耦,核心组件包括:事件监听(epoll)、回调函数(accept_cb/recv_cb/send_cb)和连接管理结构(conn)。系统采用单事件循环架构,主线程通过epoll_wait监听所有socket事件,触发对应回调处理。相比传统多线程模型,该设计避免了线程切换开销,通过conn_list数组管理连接状态,使用函数指针实现事件分发,支持HTTP/WebSocket等多协议扩展。
2026-04-28 17:33:10
525
原创 【学习笔记】从零理解网络io与io多路复用
本文总结了网络IO与IO多路复用的实现方法,重点对比了select、poll和epoll三种多路复用技术。首先介绍了基础的TCP服务器搭建流程:创建socket→绑定地址→监听连接。然后分析了单线程阻塞IO的局限性,以及多线程模型在高并发时的资源消耗问题。接着详细讲解了select的实现方式,通过维护fd_set集合和maxfd来监控多个连接,但存在遍历开销大的缺点。poll方法改用pollfd数组优化了数据结构,但仍有性能瓶颈。最后使用了epoll实现了io多路复用
2026-04-15 00:41:15
367
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅