基于epoll的单进程Reactor服务器

服务器结构图

对以上结构图作出如下解释:

  • ReactorSever中需要维护所有连接,由于服务器每一次读取缓冲区时不一定能读取到完整的报文(只有读取到完整报文才能做相应处理);每一次向缓冲区写数据时也不一定能写进去(写缓冲区满),因此对于每个链接都需要维护一对读写缓冲区,所以ReactorSever维护的不单单是fd,而是一个包含了fd、读写缓冲区的connection对象。除此之外,还可以把该链接关心的事件也存放进去。
  • 我们都知道对于listen套接字和普通套接字的处理是不同的(一个是获取链接另一个是读取数据),为了服务器的的统一性,我们给listen连接和普通连接增加一层抽象层------connection,至此,ReactorSever的眼里只有connection。给connection注册不同的方法(通过继承或者是组合)就可以实现listen套接字和普通套接字的区别对待。
  • 对于普通连接来说,还需要应用层(http协议)处理,最后进行业务处理。

服务器的实现

无小道/linux_112

相关推荐
特种加菲猫13 分钟前
从零开始手撕AVL树:详解插入、平衡因子更新与四种旋转
开发语言·c++
萑澈14 分钟前
算法竞赛入门:C++ STL核心用法与时空复杂度速查手册
数据结构·c++·算法·stl
сокол25 分钟前
【网安-Web渗透测试-内网渗透】域环境权限维持
服务器·windows·网络安全·系统安全
十六年开源服务商40 分钟前
2026服务器配置优化与WordPress运维实战指南
android·运维·服务器
江屿风1 小时前
C++OJ题经验总结(竞赛)1
开发语言·c++·笔记·算法
运筹vivo@1 小时前
LeetCode 2405. 子字符串的最优划分
c++·算法·leetcode·职场和发展·哈希表
有点。2 小时前
C++(枚举法一练习题)
开发语言·c++·算法
basketball6162 小时前
C++ 单例模式完全指南:从饿汉式到现代 C++ 的最佳实践
java·c++·单例模式
玖釉-2 小时前
栈——栈的定义及基本操作
c++·windows·算法·图形渲染
LN花开富贵2 小时前
Ubuntu aarch64 架构安装 NoMachine 远程控制 避坑与实战
linux·运维·笔记·学习·ubuntu·嵌入式