rainboyOJ / netcore

基于epoll的c++网络服务器

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

功能

  • 使用epoll(io复用,可以同时处理多个请求)与线程池实现Reactor模型
  • 基于小根堆实现的定时器,关闭超时的非活动连接;

参考

使用自己的配置文件

拷贝netcore/__default_config.hpp到自己项目目录,修改对应的值

在自己的加入CMakeLists.txt加入如下的一行

set(USER_CONFIG_PATH "${PROJECT_SOURCE_DIR}/__user_config.hpp")

注意

  • 需要创建config里的上传与静态文件夹

使用cpp编写的oj服务器

core.h 框架

                                                                               +---------------------+
                                                                               |                     |                    +-----------------------+
                                                                               |  Acceptor           |                    |                       |
                                                                               |                     |                    |                       |
 +------------------------+                                                    +---------+-----------+          +--------->     Connection        |
 |                        |                                                              |                      |         |                       |
 |    CallBack            |                                                              |async_accept          |    +----+                       |
 |                        |                                                              |                      |    |    +---+-------------------+
 +------------------------+                                                              v                      |    |        |                      Register to task_queue
 |                        |                                                    +--------------------+           |    |        |                      check to timeOut
 |    CallBackImplBase    |                                                    |                    |           |    |    +---v--------------------+
 |                        |                                                    |  AcceptorAwaiter   |           |    |    |     Async_read         +-----------------+
 +------------------------+                                                    |                    |           |    |    |                        |                 |
                                                 +----------------+            +-+------------------+           |    |    +------------------------+                 |
----------------------------                     | 1.add_epoll    |<-----------+-+   await_suspend  |           |    |                                               |
                                                 | 2.set callBack |              +------------------+           |    |    +------------------------+                 |
 +------------------------+                      |                |              |   resume         +-----------+    |    |     Async_send         +-----------------+
 |                        |                      +----------------+              +------------------+                +--->|                        |                 |
 |    AcceptorCallback    |                                                                                               +------------------------+                 |
 |                        |                                                                                                                                          |
 +------------------------+                                                                                                                                          |
                                                                                                                                                                     |
                                                                                                                                                                     |
                                                                                                                                                                     |
                                                                                                                                                                     |
                                                                                                                                                                     |
                                                                                                                                                                     |
                                                                                                                                                                     |
                                                                                                                                                                     |
               +----------------------+               +---------------------------------------------------------------------+                                        |
               |                      |               |                                                                     |                                        |
               |                      |    task_queue |                                                                     |<---------------------------------------+
               |                      |               |                                                                     |
               |                      |               +---------------------------------------------------------------------+
               |                      |
               |       IoCentext      |
               |                      |
               |                      |
               |                      |                +--------------------------------------------------------------------+
               |                      |                |                                                                    |
               |                      |            run |                                                                    |
               |                      |                |                                                                    |
               +----------------------+                +--------------------------------------------------------------------+
timer.hpp not use

功能

  • 连接超时检测
  • url_query
  • 表单提交 - multipart
  • 文件上传
    • 尺寸限制
    • multipart
  • 文件下载
    • 使用write_ranges
  • websocket(被动响应式)
  • 简易Cache

About

基于epoll的c++网络服务器


Languages

Language:C++ 95.9%Language:C 3.3%Language:Makefile 0.5%Language:CMake 0.2%Language:Shell 0.1%