muduo 学习

设计目标

muduo的设计目标是专用的数独服务器或者游戏服务器,不是用来写通用的httpd或者ftpd或Web proxy。前者通常有业务逻辑,后者更强调高并发和高吞吐量。

原理

muduo支持并发非阻塞TCP网络编程,它的核心是每个IO线程一个事件循环(loop),把IO事件分发到回调函数上。

基于事件的非阻塞网络编程
  1. 接收数据(receive):注册一个收数据的回调,网络库收到数据时调用回调函数,将收到的数据提供给我。
  2. 接受连接(accept)
  3. 发送数据(send)
TCP网络编程最本质的是处理三个半事件
  1. 连接建立。onConnection()
  2. 连接断开:主动断开(close--关闭套接字, shutdown--关闭连接)和被动断开(read返回0)。
  3. 消息到达,文件描述符可读。onMessage() 处理收到的数据
  4. 消息发送完毕(指数据写入操作系统的缓冲区,等待TCP协议栈完成数据的发送与重传) onWriteComplete()
应用层发送缓冲区
应用层接收缓冲区

长连接TCP服务,分包

  1. 消息长度固定
  2. 特殊字符作为消息边界
  3. 消息头部加长度字段
  4. 根据消息本身格式分包(JSON、XML配对)
-------------------------------------------------------------逆水行舟,不进则退。
原文地址:https://www.cnblogs.com/alilliam/p/13739134.html