欢迎使用CSDN-markdown编辑器

做一个web服务器Axe(1)

基于linux,C++的web服务器Axe。

刚学计算机的时候,总想搞些大新闻,做些“大东西”,因此当时也关注过编译器,linux内核,unity等等,奈何水平有限,这些雄心最后也都不了了之。现在本科毕业了,又要继续念研究生,时间充裕,水平凑合,是时候完成当年的愿望了—-做个“大玩具”。本科毕设是web开发,研究生方向是网络安全,同时现在在一个创业团队里做后端开发。因为对网络编程和http协议的了解,所以我的大玩具就选定是web服务器了。

第一步.取一个名字

Axe

第二步.了解HTTP协议

不多说,资料链接如下
http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html
具体的用到了再说。

第三步.定一个小目标

  • HELLO WORLD
  • 支持并发访问

开始

为了完成小目标,我们分三个步骤:

  • 1.完成一个简单的服务器程序。
  • 2.为服务器程序加上并发处理机制。
  • 3.处理简单的http请求。
1.完成一个简单的服务器程序

看资料,建议去找一本UNP回来看,不细说
http://blog.csdn.net/yueguanghaidao/article/details/7035248
下面说说代码的事:

2.为服务器程序加上并发处理机制

并发处理的一般性解决办法有两种,一种是使用多线程,主进程fork出多个子线程,各子线程间并行处理网络请求,来达到并发处理的效果,另一种是使用异步IO操作。多线程涉及到了临界区资源,同步互斥,多线程的开销等诸多问题,先不考虑。因此就选择异步IO来进行并发操作。资料如下:
http://blog.csdn.net/byxdaz/article/details/5461142
异步IO就实质上来说就是只使用一个进程,伪装出好像有多个线程在进行处理的效果。之所以能有这种效果。其原因在于一般情况下,一个任务的计算机的CPU运算时间<<从内存读取数据的时间<<<<<<从硬盘读取数据的时间。
当使用单一进程处理一个任务时,在CPU完成了运算后,任务需要从存储器读取数据,这时CPU就处在空闲状态,直到存储器返回数据后,才继续工作,这种情况叫做同步IO。如果在等待存储器返回数据的时候,CPU转而为另一个任务提供运算服务,等到存储器将数据返回后,CPU再转到原来的任务上继续处理,这样就能大幅提高计算机的处理性能,这种情况就叫做异步IO。
linux C++有关异步IO的实现有select/poll/epoll,三者的差别和有了吧,这里选择epoll。
http://www.cnblogs.com/Anker/p/3265058.html
下面说说代码的事:

3.处理简单的http请求

待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值