CPP服务器
ColaForced
这个作者很懒,什么都没留下…
展开
-
CPP服务器08--http请求响应实现
http服务设计对于静态页面服务器来说,其工作流程如下:- 接收客户端消息- 解析出http请求报文- 业务逻辑,拼装响应报文- 发送给客户端结果http连接类设计目标:将客户端唯一文件描述符封装,表示成一个连接实体.从socket读报文–>buffer存储给socket写报文–>buffer存储解析逻辑-->进一步划分給子类去做 requests类响应逻辑-->进一步划分給子类去做 response类头文件#ifndef HTTP_CONN_H#原创 2021-10-01 15:15:52 · 399 阅读 · 0 评论 -
CPP服务器07--服务器层次分析及其设计
IO复用EPOLL服务器设计软件层次设计 WebServer :服务器逻辑框架: epoller监听+线程池读写 | | Epoller Timer :epoll操作封装, 定时器给连接计时 | | ---------- |原创 2021-10-01 14:00:12 · 180 阅读 · 0 评论 -
CPP服务器06--线程池实现(2)
线程池封装说明:上篇文章中的线程池,功能相对完整,有管理调度线程.但接口定义通用性差,需要修改,奈何目前水平不够,只能先找一个能用的替换,以后再改吧.阅读建议:// std::thread :https://subingwen.cn/cpp/thread/// std::function :https://blog.csdn.net/jinzhu1911/article/details/101307637// template<typename F,typename…原创 2021-10-01 09:49:42 · 164 阅读 · 0 评论 -
CPP服务器05--线程池实现(1)
线程池封装 1实现思路:组件:pthread_t *workers; //工作线程数组pthread_t manager; //管理者线程TaskQueue *task_queue; //任务队列思路:多个工作线程,外部线程添加任务,结合阻塞任务队列实现生产消费者模型;管理者线程负责工作线程的调度策略比如说,存活数小于设定最大线程数且存在未执行任务,则创建线程当忙碌线程小于当前存活线程数且,则进行线程销毁.实现: 任务和任务队列#i原创 2021-09-30 22:36:56 · 234 阅读 · 0 评论 -
CPP服务器04--Epoll反应器封装
Epoller反应器封装实现思路:容器:std::vector events_;操作:对epoll创建,关闭,添加,修改,删除,等待进行封装头文件#ifndef EPOLLER_H#define EPOLLER_H#include <sys/epoll.h> //epoll_ctl()#include <fcntl.h> // fcntl()#include <unistd.h> // close()#include <assert.h&原创 2021-09-29 12:07:08 · 167 阅读 · 0 评论 -
CPP服务器02--字符读写缓冲区封装
字符读写缓冲区封装功能需求:对一个文件描述符进行读写操作,需要可自动调整大小的缓冲区实现思路:容器:std::vector buff操作:维护读写两个指针记录当前读写位置,扩容:若写指针达到当前buff尾,且数据未读完缩减:每次操作完成,重置缓冲区头文件#ifndef BUFFER_H#define BUFFER_H#include <cstring> //perror#include <iostream>#include <unis原创 2021-09-28 22:07:01 · 209 阅读 · 0 评论 -
CPP服务器01--阻塞队列的实现
阻塞队列1. 实现原理:1. 容器:std::queue<T> 2. 逻辑:使用一把互斥锁控制队列这个临界资源的访问; 使用条件变量控制入队出队操作(队满则入队阻塞,队空则出队阻塞);#include "../log/blockqueue.hpp"#include "pthread.h"#include <cstdlib>#include <ctime>#include <unistd.h>std::unique_ptr<Bloc原创 2021-09-27 22:00:36 · 197 阅读 · 0 评论