• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

jacob-zjj/LinuxSocket_Cplus: LinuxC++ 高并发网络编程【高性能静态网络服务器 一步 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称(OpenSource Name):

jacob-zjj/LinuxSocket_Cplus

开源软件地址(OpenSource Url):

https://github.com/jacob-zjj/LinuxSocket_Cplus

开源编程语言(OpenSource Language):

C++ 69.3%

开源软件介绍(OpenSource Introduction):

Linux C++ socket网络编程

【高性能静态网络服务器 一步步搭建过程】

Reference chenshuo && GitHub-linyacool

编译环境:

socket14(静态服务器)之前使用ubuntu18.04等环境均可

socket14(静态服务器)使用ubuntu14.04 g++4.8 进行编译

socket15和socket16为静态服务器最终版本 使用ubuntu14.04 g++4.8编译即可

socket14/15/16 Introduction

该项目为c++11(智能指针)编写的Web静态高并发网络服务器,使用socket网络编程相关知识,使用状态机的方式解析了get、head请求,主要是获取目的静态资源在前端网页进行展示,可以理解为B/S模式,同时通过解析确认是否为长连接,编程中加入的了支持长连接的代码,在此基础同时支持管线化请求;最后再加入日志系统将服务器运行状态写入日志文件,记录服务器的运行状态。

测试页:http://121.199.60.131/

Technical points(项目中的技术点)

  • 使用Epoll ET的IO多路复用技术,非阻塞IO,使用Reactor模式
  • 使用多线程充分利用多核CPU,并使用线程池(线程池的大小根据不同主机CPU的核心数)避免线程频繁创建销毁的开销
  • 使用基于小根堆(priority_queue)的定时器对每个请求设置过期时间 关闭超时请求
  • 主线程只负责accept请求,并以Round Robin的方式分发给其它IO线程(兼计算线程),锁的争用只会出现在主线程和某一特定线程中
  • 使用eventfd实现了线程的异步唤醒
  • 使用双缓冲区技术实现了简单的异步日志系统
  • 为减少内存泄漏的可能,使用智能指针等RAII机制
  • 使用状态机解析了HTTP请求,支持管线化
  • 支持优雅关闭连接 先关闭写端再关闭读端

静态网络服务器编译环境

  • OS: Ubuntu 14.04
  • Complier: g++ 4.8

开启服务器

./WebServer [-t thread_numbers] [-p port] [-l log_file_path(should begin with '/')]

并发模型

并发模型为Reactor+非阻塞IO+线程池,新连接Round Robin分配

代码统计

使用ubuntu中的cloc工具可以对项目代码进行统计

Others

可以采用Webbench来对项目进行压力测试

库结构

socket01 - socket13是学习Linux网络编程的整个流程 socket14可以在先学习socket13的基础上来学习 socket14中分为了6个版本,v0.6版本启动myserver时需要进入root权限 每个版本都较前一个版本有了更新 在socket13的基础上加入了线程池,定时器,请求任务队列,同时加入了RALL锁,智能指针,非拷贝赋值类; 将epoll 等用类进行封装

socket15 16主要是web静态高并发网络服务器




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
kekru/linux-utils发布时间:2022-08-15
下一篇:
ikwzm/ZynqMP-FPGA-Linux: FPGA+SoC+Linux+Device Tree Overlay+FPGA Manager U-Boot ...发布时间:2022-08-15
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap