实例介绍
【实例简介】linux下的webserver
增加POST方法,修改线程池,将任务队列的list 改成queue,改进线程池,使线程池能正确的正常的退出,改用互斥量和条件变量来保护任务队列。
Http的响应报文,其中包含Content-Length的属性,客户端接收完之后,会主动关闭连接,而不用服务器关闭,防止大量的TIME_WAIT状态的连接,提高Server的可以性。【实例截图】
【核心代码】
.
├── WebServer-master
│ └── WebServer-master
│ ├── CMakeLists.txt
│ ├── LICENSE
│ ├── README.md
│ ├── WebBench
│ │ ├── LICENSE
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── bin
│ │ │ └── webbench
│ │ ├── build.sh
│ │ ├── debian
│ │ │ ├── changelog
│ │ │ ├── control
│ │ │ ├── copyright
│ │ │ ├── dirs
│ │ │ └── rules
│ │ ├── man
│ │ │ └── man1
│ │ │ └── webbench.1
│ │ ├── share
│ │ │ └── doc
│ │ │ └── webbench
│ │ │ ├── changelog
│ │ │ └── copyright
│ │ ├── socket.c
│ │ ├── tags
│ │ ├── test.sh
│ │ ├── webbench
│ │ ├── webbench.1
│ │ └── webbench.c
│ ├── WebServer
│ │ ├── CMakeLists.txt
│ │ ├── Channel.cpp
│ │ ├── Channel.h
│ │ ├── Epoll.cpp
│ │ ├── Epoll.h
│ │ ├── EventLoop.cpp
│ │ ├── EventLoop.h
│ │ ├── EventLoopThread.cpp
│ │ ├── EventLoopThread.h
│ │ ├── EventLoopThreadPool.cpp
│ │ ├── EventLoopThreadPool.h
│ │ ├── HttpData.cpp
│ │ ├── HttpData.h
│ │ ├── Main.cpp
│ │ ├── Makefile
│ │ ├── Makefile.bak
│ │ ├── Server.cpp
│ │ ├── Server.h
│ │ ├── ThreadPool.cpp
│ │ ├── ThreadPool.h
│ │ ├── Timer.cpp
│ │ ├── Timer.h
│ │ ├── Util.cpp
│ │ ├── Util.h
│ │ ├── base
│ │ │ ├── AsyncLogging.cpp
│ │ │ ├── AsyncLogging.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Condition.h
│ │ │ ├── CountDownLatch.cpp
│ │ │ ├── CountDownLatch.h
│ │ │ ├── CurrentThread.h
│ │ │ ├── FileUtil.cpp
│ │ │ ├── FileUtil.h
│ │ │ ├── LogFile.cpp
│ │ │ ├── LogFile.h
│ │ │ ├── LogStream.cpp
│ │ │ ├── LogStream.h
│ │ │ ├── Logging.cpp
│ │ │ ├── Logging.h
│ │ │ ├── Log的设计.txt
│ │ │ ├── MutexLock.h
│ │ │ ├── Thread.cpp
│ │ │ ├── Thread.h
│ │ │ ├── noncopyable.h
│ │ │ └── tests
│ │ │ ├── CMakeLists.txt
│ │ │ └── LoggingTest.cpp
│ │ ├── config.h
│ │ └── tests
│ │ ├── CMakeLists.txt
│ │ └── HTTPClient.cpp
│ ├── build.sh
│ ├── datum
│ │ ├── WebServer.png
│ │ ├── WebServerk.png
│ │ ├── cloc.png
│ │ ├── close.png
│ │ ├── gdb.png
│ │ ├── idle.png
│ │ ├── keepalive.png
│ │ ├── model.png
│ │ ├── muduo.png
│ │ └── muduok.png
│ ├── old_version
│ │ ├── old_version_0.1
│ │ │ ├── Makefile
│ │ │ ├── Makefile1
│ │ │ ├── epoll.cpp
│ │ │ ├── epoll.h
│ │ │ ├── improvement.txt
│ │ │ ├── index.html
│ │ │ ├── main.cpp
│ │ │ ├── requestData.cpp
│ │ │ ├── requestData.h
│ │ │ ├── threadpool.cpp
│ │ │ ├── threadpool.h
│ │ │ ├── util.cpp
│ │ │ └── util.h
│ │ ├── old_version_0.2
│ │ │ ├── Makefile
│ │ │ ├── Makefile1
│ │ │ ├── epoll.cpp
│ │ │ ├── epoll.h
│ │ │ ├── favicon.ico
│ │ │ ├── improvement.txt
│ │ │ ├── index.html
│ │ │ ├── main.cpp
│ │ │ ├── requestData.cpp
│ │ │ ├── requestData.h
│ │ │ ├── threadpool.cpp
│ │ │ ├── threadpool.h
│ │ │ ├── util.cpp
│ │ │ └── util.h
│ │ ├── old_version_0.3
│ │ │ ├── Makefile
│ │ │ ├── Makefile1
│ │ │ ├── config.h
│ │ │ ├── epoll.cpp
│ │ │ ├── epoll.h
│ │ │ ├── favicon.ico
│ │ │ ├── improvement.txt
│ │ │ ├── index.html
│ │ │ ├── main.cpp
│ │ │ ├── requestData.cpp
│ │ │ ├── requestData.h
│ │ │ ├── threadpool.cpp
│ │ │ ├── threadpool.h
│ │ │ ├── util.cpp
│ │ │ └── util.h
│ │ ├── old_version_0.4
│ │ │ ├── Makefile
│ │ │ ├── Makefile1
│ │ │ ├── base
│ │ │ │ ├── mutexLock.hpp
│ │ │ │ └── nocopyable.hpp
│ │ │ ├── config.h
│ │ │ ├── epoll.cpp
│ │ │ ├── epoll.h
│ │ │ ├── favicon.ico
│ │ │ ├── improvement.txt
│ │ │ ├── index.html
│ │ │ ├── main.cpp
│ │ │ ├── requestData.cpp
│ │ │ ├── requestData.h
│ │ │ ├── threadpool.cpp
│ │ │ ├── threadpool.h
│ │ │ ├── timer.cpp
│ │ │ ├── timer.h
│ │ │ ├── util.cpp
│ │ │ └── util.h
│ │ ├── old_version_0.5
│ │ │ ├── Makefile
│ │ │ ├── Makefile1
│ │ │ ├── base
│ │ │ │ ├── condition.hpp
│ │ │ │ ├── mutexLock.hpp
│ │ │ │ └── nocopyable.hpp
│ │ │ ├── config.h
│ │ │ ├── epoll.cpp
│ │ │ ├── epoll.h
│ │ │ ├── favicon.ico
│ │ │ ├── index.html
│ │ │ ├── main.cpp
│ │ │ ├── requestData.cpp
│ │ │ ├── requestData.h
│ │ │ ├── threadpool.cpp
│ │ │ ├── threadpool.h
│ │ │ ├── timer.cpp
│ │ │ ├── timer.h
│ │ │ ├── util.cpp
│ │ │ └── util.h
│ │ └── old_version_0.6
│ │ ├── AsyncLogging.cpp
│ │ ├── AsyncLogging.h
│ │ ├── Condition.h
│ │ ├── CountDownLatch.cpp
│ │ ├── CountDownLatch.h
│ │ ├── CurrentThread.hpp
│ │ ├── FileUtil.cpp
│ │ ├── FileUtil.h
│ │ ├── LogFile.cpp
│ │ ├── LogFile.h
│ │ ├── LogStream.cpp
│ │ ├── LogStream.h
│ │ ├── Logging.cpp
│ │ ├── Logging.h
│ │ ├── Makefile
│ │ ├── Makefile1
│ │ ├── MutexLock.h
│ │ ├── Thread.cpp
│ │ ├── Thread.h
│ │ ├── config.h
│ │ ├── epoll.cpp
│ │ ├── epoll.h
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.cpp
│ │ ├── noncopyable.h
│ │ ├── requestData.cpp
│ │ ├── requestData.h
│ │ ├── threadpool.cpp
│ │ ├── threadpool.h
│ │ ├── timer.cpp
│ │ ├── timer.h
│ │ ├── util.cpp
│ │ └── util.h
│ ├── 并发模型.md
│ ├── 版本历史.md
│ ├── 项目目的.md
│ ├── 测试及改进.md
│ ├── 连接的维护.md
│ └── 遇到的困难.md
└── linux下的webserver.rar
24 directories, 203 files
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论