再来一个最近写的小玩意儿,taoweb,一个超简单小型的web(HTTP)服务器。虽然正值国庆之时,但其实开发开始于一个月之前。
taoweb 目前仅支持服务静态内容(输出静态文件,比如本地HTML浏览器,文件共享服务器),不支持动态内容(CGI,FASTCGI等,Python、PHP等都是经过前两者(或之一)与web服务器进行通信的)。仅在Visual Studio上开发,仅支持 Windows,但很容易被移植。
网络模型没有采用高端的IO模型(如IOCP完成端口,epoll),而采用的是多线程同步模型。工作过程是这样的:主线程接收来自客户端的连接,(在有必要时)创建工作线程,工作线程取一个代表客户端连接的数据结构并一一处理请求内容,工作线程服务完一个HTTP请求之后,把自己标记为空闲状态并加入到空闲队列,等待下一次的请求。这是一个非常简单的工作模式,采用这种方式有几个原因:1、本软件主要是实现一个简单的HTTP服务器,而不是讲通信模型的使用;2、本人对高效的异步通信模型不熟悉,不能灵活地使用;
项目源代码完全开源,托管在 GitHub 上面。这依然只是个仅供娱乐的项目,我不会花太多时间在其上面,也不可能会有完善它,能达到独当一面,或作为现有替代的想法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
看起来还算简单吧:初始化平台库,创建服务器,运行服务器,接受客户连接,创建处理工作线程。
源代码
GitHub地址:https://github.com/movsb/taoweb.git。
开发工具:VisualStudio2013 + C++11。