Skip to content

采用非阻塞套接字、epoll和kqueue的IO复用,实现基本网页服务器

Notifications You must be signed in to change notification settings

oniisancr/webserver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

webserver

Try to create a web server using C++.

  • 结构:

    • EventHandler类,处理客户端业务逻辑。由ThreadPool线程池管理。
    • Simpoller类,抽象出epoll、kqueue的共同接口,经过条件编译,选择epoll或kqueue,实现跨平台。
    • sockets文件夹下类,是对socket不同阶段的封装。
  • 特点:

    • 使用Epoll、kqueue实现IO复用
    • 使用边缘触发、非阻塞socket
    • 使用线程池处理业务逻辑
    • 对socket进行封装,可复用代码
  • 问题:

    • 仅支持GET方法,可对simpleweb类重新编写
    • 使用tcp的短链接,即每一次处理完就关闭该连接,不能多次交互。
      • 可删除EventHandler类中关闭连接,另外在线程池中增加对socket超时的关闭连接。
    • 项目出于对方法的学习,未从顶层设计。结构稍显混乱。
  • reference:

About

采用非阻塞套接字、epoll和kqueue的IO复用,实现基本网页服务器

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published