高性能网络服务器编程,GitHub - jacob-zjj/LinuxSocket_Cplus: LinuxC++ 高并发网络编程【高性能静态网络服务器 一步步搭建过程】从基础到socket熟练应用...

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模式,同时通过解析确认是否为长连接,编程中加入的了支持长连接的代码,在此基础同时支持管线化请求;最后再加入日志系统将服务器运行状态写入日志文件,记录服务器的运行状态。

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ERROR: Bitbake Fetcher Error: FetchError('Fetch command export PSEUDO_DISABLED=1; export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus,guid=d96498d849b66a7ed5ae1643647dc969"; export SSH_AGENT_PID="1854"; export SSH_AUTH_SOCK="/run/user/1000/keyring/ssh"; export PATH="/home/wu/3568/yocto/poky/scripts/native-intercept:/home/wu/3568/yocto/build/tmp/sysroots-uninative/x86_64-linux/usr/bin:/home/wu/3568/yocto/build/tmp/work/x86_64-linux/bmap-tools-native/3.6+gitAUTOINC+c0673962a8-r0/recipe-sysroot-native/usr/bin/python3-native:/home/wu/3568/yocto/poky/scripts:/home/wu/3568/yocto/build/tmp/work/x86_64-linux/bmap-tools-native/3.6+gitAUTOINC+c0673962a8-r0/recipe-sysroot-native/usr/bin/x86_64-linux:/home/wu/3568/yocto/build/tmp/work/x86_64-linux/bmap-tools-native/3.6+gitAUTOINC+c0673962a8-r0/recipe-sysroot-native/usr/bin:/home/wu/3568/yocto/build/tmp/work/x86_64-linux/bmap-tools-native/3.6+gitAUTOINC+c0673962a8-r0/recipe-sysroot-native/usr/sbin:/home/wu/3568/yocto/build/tmp/work/x86_64-linux/bmap-tools-native/3.6+gitAUTOINC+c0673962a8-r0/recipe-sysroot-native/usr/bin:/home/wu/3568/yocto/build/tmp/work/x86_64-linux/bmap-tools-native/3.6+gitAUTOINC+c0673962a8-r0/recipe-sysroot-native/sbin:/home/wu/3568/yocto/build/tmp/work/x86_64-linux/bmap-tools-native/3.6+gitAUTOINC+c0673962a8-r0/recipe-sysroot-native/bin:/home/wu/3568/yocto/poky/bitbake/bin:/home/wu/3568/yocto/build/tmp/hosttools"; export HOME="/home/wu"; git -c core.fsyncobjectfiles=0 -c gc.autoDetach=false -c core.pager=cat clone -n -s /home/wu/3568/yocto/build/../packages/git2/github.com.intel.bmap-tools/ /home/wu/3568/yocto/build/tmp/work/x86_64-linux/bmap-tools-native/3.6+gitAUTOINC+c0673962a8-r0/git/ failed with exit code 128, output:\nfatal: repository \'/home/wu/3568/yocto/build/../packages/git2/github.com.intel.bmap-tools/\' does not exist\n', None)具体如何修改
最新发布
06-08

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值