C++⽹络编程⽅⾯的开源项⽬
Webbench是⼀个在linux下使⽤的⾮常简单的⽹站压测⼯具。它使⽤fork()模拟多个客户端同时访问我们设定的URL,测试⽹站在压⼒下⼯作的性能,最多可以模拟3万个并发连接去测试⽹站的负载能⼒。Webbench使⽤C语⾔编写, 代码实在太简洁,源码加起来不到600⾏。下载链接:
Tinyhttpd是⼀个超轻量型Http Server,使⽤C语⾔开发,全部代码只有502⾏(包括注释),附带⼀个简单的Client,可以通过阅读这段代码理解⼀个 Http Server 的本质。下载链接链接:
⾼性能web服务器
C语⾔写的事件驱动框架
:C++⾯向对象⽹络编程⼯具包
:⽤于⽹络和底层I/O编程的跨平台的C++库
:C++ REST SDK
:⾼级⽹络编程的开源库集合
C语⾔的异步⽹络
:多协议⽂件传输库
:⾮常轻量级的⽹络服务器
:⽤于Linux多线程服务器的C++⾮阻塞⽹络库
怎样写代码 自己做编程:C/C++的TCP 客户端/服务器库
:基于C语⾔的超轻型软件平台,⽤于可扩展的服务器端和⽹络应⽤。对于C编程⼈员,可以考虑node.js
:C语⾔HTTP服务器库,其设计为轻量级,易使⽤。
:⽤于构建⽹络和基于互联⽹应⽤程序的C++类库,可以运⾏在桌⾯,服务器,移动和嵌⼊式系统。
:为游戏开发⼈员提供的跨平台的开源C++⽹络引擎。
:⽤于Qt之上的C++构建的异步Web框架。
:基于C++/Boost Aiso的websocket 客户端/服务器库
:⾼速,模块化的异步通信库
这个⽹站整理的⽐较全,介绍c和c++的项⽬:
应邀答题,很好奇这样中规中矩的题⽬为啥要匿名。
⾸先说说“适合学⽣参与”。参与开源项⽬的开发者,来⾃各⾏各业的都有,并没有哪些开源项⽬学⽣的⽐例明显⾼于其它项⽬的。⾄于GSoC,其项⽬也不是单独为学⽣专门设计的,都只是从标准的开源项⽬⾥选出⼀些⼯作量⼤⼩适中的⼦项⽬专门让学⽣参与⽽已。如果硬要说学⽣和其它开发者有什么不同的话,那就是学⽣的时间⽐其它⾏业的⼈会更充⾜⼀些,功利性会弱⼀些,贡献可以更加不计回报⼀些。因此,并不存在什么项⽬更“适合学⽣参与”的说法,只要你愿意,任何项⽬都是可以参加的。
然后说说“C++”。由于 C++ 学习难度太⼤,各种复杂特性太多,要想在项⽬中把 C++ ⽤好,⼀⽅⾯需要所有开发者都具备⽐较扎实的功底,另⼀⽅⾯还需要开发者彼此之间建⽴严格的规范和约定。对于以公司的形式进⾏的开发⽽⾔,这两个条件⽐较容易满⾜,只要通过招聘设置门槛,通过规章制度限制开发流程就⾏。但对于开源项⽬这种形式的开发⽽⾔,为了保证这两个条件,项⽬必然表现出很强的排外性,开源的C++ 项⽬往往对于外部贡献者的接纳程度要低于其它语⾔的项⽬,想要真正参与到⼀个开源 C++ 项⽬⾥是⾮常困难的。因此,在选择项⽬的时候,不要把⽬光集中在 C++ 项⽬上,其它语⾔的项⽬也⼀样可以参与。
再说说“⽹络编程”。在决定参与“⽹络编程”相关的项⽬之前,你需要先明确⼀下你参与开源项⽬的⽬的。如果只是为了熟悉“能够联⽹的程序”是怎么编写,譬如电⼦邮件客户端啊,简易即时通讯软件等,真的没有必要⾮得参与⼀个“⽹络编程”相关项⽬,⾃⼰写⼏个⼩程序练习⼀下就可以了。在“能够联⽹的程序”⾥⾯,⽹络相关操作⽤到的⽆⾮就是⼏个简单的套接字 API ⽽已,所有和⽹络相关的代码,在整个代码库⾥⾯只会占到很⼩的⽐率。开发⼀个⽹络应⽤程序的难点反⽽都在⾮⽹络部分,譬如系统设计、模块划分、各种细节的处理等等,这些才是真正值得学习的。要想学习这些内容,参与任何⼀个具有⼀定⽤户数量和代码规模的项⽬都可以学到,不要把⾃⼰的选择⾯局限在“⽹络编程”上。
当然,⽹络操作占整个代码库较⼤⽐率的项⽬实际上也是存在的。不过这种类型的项⽬,处理的⼤多是⼤数据量、海量客户、⾼负载、⾼并发之类的问题,这些难度就⾮常⼤了。然⽽这些问题,如果不是在具体⼯作中遇到⾮常具体的应⽤场景的话,光凭想象和少量⼏台电脑做实验是完全⽆法理解掌握的。既然在学⽣阶段很难有机会去接触这⽅⾯内容,不如先把基础知识学好,基本功掌握更牢靠⼀些,把这部分知识留到⼯作之后再学。
⽹络编程看题主准备写什么东西了,写不同的东西⽤不同的框架。
如果题主愿意参与进来我表⽰⾮常欢迎。如果题主想参与其他项⽬,这⾥有个⼩⼩的建议:尽量参与国⼈(特指⽤中⽂交流)的项⽬,避免交流上的困扰,把精⼒都放在项⽬上。
以上
⽹络编程和c++完全是两回事,前者只要明⽩webservice 怎样运作,然后套⽤API就好了。本⾝是没有太多挑战的,除⾮涉及到复杂的算法来提⾼性能,但那是另外⼀回事。 C++的话需要很好的编程功底,是很要求对low level programming良好的掌握。可以关注⼀下google for students每年的活动

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。