入门C++网络编程,刚开始会学习一些基础API或者书上的回射服务器、聊天室、简单HTTP服务器实现,学完上述基础后,我们肯定想大显身手做一个像样项目,但看来看去也不知道该怎么入手,或者不知道一个像样项目的框架是什么。
我建议刚开始不要上来就钻网络框架,也不适合入手成熟复杂的项目,最好是找一些基础开源项目,根据自己的想法在其基础上添砖加瓦或者重新写一遍,有了这些基础后,再谈精进。
其实,对于初学者来说,最难的就是找到一个容易入门的,基础的后台开发项目。
这时候,很多人都会推荐推荐陈硕大佬的书和木铎,我也推荐。
但我建议,在读陈大佬的书之前,可以先看一下游双的Linux高性能服务器编程,将书上的代码和例程跑一遍,再去看muduo,肯定会更有收获。
C++后台开发,一般的是指服务器端开发,涉及的模型有C/S模型和B/S模型。其中C/S模型更多的是关注TCP协议,服务器端和客户端都需要自己完成,数据包也需要自己设计;B/S模型更多的关注HTTP协议,因为以浏览器充当客户端,并且有现成的HTTP协议,所以重点在服务器端。
我们看大多数书上的讲解目录,都是先讲C/S模型,再讲B/S模型。相对于入门来说,书上的回射服务器和聊天室程序更容易入门和理解,但要想做一个拿得出手的C/S模型项目,个人觉得还是不容易的。
从面试做项目的角度,我个人更倾向先从简易的B/S模型入手,然后再过渡到简易的C/S模型。这样我们可以跳过客户端和数据包的设计,将更多重点放在服务器端,尽快完成一个小demo,提升初学者的信心。
在这里我将去年面试秋招时候我所准备的项目分享给大家,希望对刚入门的小伙伴有所帮助,这个项目目前还在更新和维护。
项目链接:https://github.com/qinguoyi/TinyWebServer
去年秋招的时候,读完游双的高性能Linux服务器编程后,我根据书上的代码攒了一个Linux下C++轻量级Web服务器的项目,在原来的基础上实现了简单注册和登录等简单前台交互和后台访问功能,经压力测试可以实现上万的并发连接。(测试机器为Intel i7 7700,16G内存)。
Linux下C++轻量级Web服务器虽然是toy级别的项目,但只要你按照README中的步骤运行,经多个同学测试,一次就可以跑通,这将极大增强初学者做项目的信心。
经过各位小伙伴的反馈,一旦请求服务器文件较大文件时,会出现问题,不是文件显示不全,就是无法显示。我分析定位到了问题后,做了初步修正,并实现了Demo
。等代码测试完成后,我会将其同步到Github
。
目前对该Bug初步修正后,我在Ubuntu下的Chrome浏览器进行了大文件测试,请求服务器上的大图(6M)和视频(493k),效果如下。
Webbench对服务器进行压力测试,可以实现上万的并发连接.
- 并发连接总数:10500
- 访问服务器时间:5s
- 每秒钟响应请求数:552852 pages/min
- 每秒钟传输数据量:1031990 bytes/sec
- 所有访问均成功
整体的框架就是下面这样子,模块联系比较简单,耦合性也不高,非常简陋,只求能看懂就好。
项目中所涉及的模块和知识点,我进行了整理,罗列在下面,每个模块都有对应知识的理解和运用。
再次强调,代码大部是书上的,我只是整理成一个较为完善的项目,并加了一些功能,对所有做了一些注释和讲解。
如果对上面的项目模块原理有疑问,大家优先查阅游双的Linux高性能服务器编程,还有些模糊的话,欢迎来我公号查看系列讲解,最后实在搞不清楚,就直接骚扰我吧。
如果你对这个项目感兴趣,或者在学习项目过程有什么疑问,关注公众号【两猿社】可以直接联系我。
感谢你能看到这里。