• Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接: LippiOuYang/WebBench
    · GitHub
  • Tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质。下载链接链接: LippiOuYang/Tinyhttpd
    · GitHub
  • nginx: download高性能web服务器
  • libevent/libevent
    · GitHub
    C语言写的事件驱动框架
  • ACE:C++面向对象网络编程工具包
  • Boost.Asio:用于网络和底层I/O编程的跨平台的C++库
  • Casablanca:C++
    REST SDK
  • cpp-netlib:高级网络编程的开源库集合
  • Dyad.c:C语言的异步网络
  • libcurl:多协议文件传输库
  • Mongoose:非常轻量级的网络服务器
  • Muduo:用于Linux多线程服务器的C++非阻塞网络库
  • net_skeleton:C/C++的TCP
    客户端/服务器库
  • nope.c:基于C语言的超轻型软件平台,用于可扩展的服务器端和网络应用。
    对于C编程人员,可以考虑node.js
  • Onion:C语言HTTP服务器库,其设计为轻量级,易使用。
  • POCO:用于构建网络和基于互联网应用程序的C++类库,可以运行在桌面,服务器,移动和嵌入式系统。
  • RakNet:为游戏开发人员提供的跨平台的开源C++网络引擎。
  • Tuf o:用于Qt之上的C++构建的异步Web框架。
  • WebSocket++:基于C++/Boost
    Aiso的websocket 客户端/服务器库
  • ZeroMQ:高速,模块化的异步通信库
  • 这个网站整理的比较全,介绍c和c++的项目: 值得推荐的C/C++框架和库

应邀答题,很好奇这样中规中矩的题目为啥要匿名。

首先说说“适合学生参与”。参与开源项目的开发者,来自各行各业的都有,并没有哪些开源项目学生的比例明显高于其它项目的。至于 GSoC,其项目也不是单独为学生专门设计的,都只是从标准的开源项目里选出一些工作量大小适中的子项目专门让学生参与而已。如果硬要说学生和其它开发者有什么不同的话,那就是学生的时间比其它行业的人会更充足一些,功利性会弱一些,贡献可以更加不计回报一些。因此,并不存在什么项目更“适合学生参与”的说法,只要你愿意,任何项目都是可以参加的。

然后说说“C++”。由于 C++ 学习难度太大,各种复杂特性太多,要想在项目中把 C++ 用好,一方面需要所有开发者都具备比较扎实的功底,另一方面还需要开发者彼此之间建立严格的规范和约定。对于以公司的形式进行的开发而言,这两个条件比较容易满足,只要通过招聘设置门槛,通过规章制度限制开发流程就行。但对于开源项目这种形式的开发而言,为了保证这两个条件,项目必然表现出很强的排外性,开源的
C++ 项目往往对于外部贡献者的接纳程度要低于其它语言的项目,想要真正参与到一个开源 C++ 项目里是非常困难的。因此,在选择项目的时候,不要把目光集中在 C++ 项目上,其它语言的项目也一样可以参与。

再说说“网络编程”。在决定参与“网络编程”相关的项目之前,你需要先明确一下你参与开源项目的目的。如果只是为了熟悉“能够联网的程序”是怎么编写,譬如电子邮件客户端啊,简易即时通讯软件等,真的没有必要非得参与一个“网络编程”相关项目,自己写几个小程序练习一下就可以了。在“能够联网的程序”里面,网络相关操作用到的无非就是几个简单的套接字 API 而已,所有和网络相关的代码,在整个代码库里面只会占到很小的比率。开发一个网络应用程序的难点反而都在非网络部分,譬如系统设计、模块划分、各种细节的处理等等,这些才是真正值得学习的。要想学习这些内容,参与任何一个具有一定用户数量和代码规模的项目都可以学到,不要把自己的选择面局限在“网络编程”上。

当然,网络操作占整个代码库较大比率的项目实际上也是存在的。不过这种类型的项目,处理的大多是大数据量、海量客户、高负载、高并发之类的问题,这些难度就非常大了。然而这些问题,如果不是在具体工作中遇到非常具体的应用场景的话,光凭想象和少量几台电脑做实验是完全无法理解掌握的。既然在学生阶段很难有机会去接触这方面内容,不如先把基础知识学好,基本功掌握更牢靠一些,把这部分知识留到工作之后再学。

最后回到我们最初的问题上,把“适合学生参与”、“C++”和“网络编程”这三个限制条件都去掉之后,问题就变成了“有哪些开源项目”了。这个问题回答很容易:直接上 http://
sf.net
或 http:// code.google.com搜一搜,能找到无数的开源项目,选择面是非常广的。至于“如何参与一个开源项目”,那又是另外一个不同的问题,如果感兴趣的话可以新开一个话题单独讨论,这里就不多说了。

网络编程看题主准备写什么东西了,写不同的东西用不同的框架。

拿我自己来说,我自己也是个学生,经常写app服务器(拜移动应用太火所赐吧),由于服务器要兼顾app和web,所以一般用http(https)协议,开始我选择的wt之类的框架,后来发现一些东西用起来各种不顺(比如wt里的smtp居然没有用户名和密码的接口,http请求不能异步等),所以又自己造了个轮子( https://
github.com/lucklove/sht tpd
)。这个轮子是用来做app server用的,现在刚刚开始没多久可能各方面比较缺,后期会补上。

如果题主愿意参与进来我表示非常欢迎。如果题主想参与其他项目,这里有个小小的建议:尽量参与国人(特指用中文交流)的项目,避免交流上的困扰,把精力都放在项目上。

以上

网络编程和c++完全是两回事,前者只要明白webservice 怎样运作, 然后套用API就好了。本身是没有太多挑战的, 除非涉及到复杂的算法来提高性能,但那是另外一回事。 C++的话需要很好的编程功底,是很要求对low level programming良好的掌握。 可以关注一下google for students每年的活动

来自: http://www.zhihu.com/question/19655330

C++网络编程方面的开源项目的更多相关文章

  1. 有哪些适合学生参与的 C++,网络编程方面的开源项目?

    有哪些适合学生参与的 C++,网络编程方面的开源项目?   Tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通 ...

  2. C#网络编程技术FastSocket实战项目演练

    一.FastSocket课程介绍 .NET框架虽然微软提供了socket通信的类库,但是还有很多事情要自己处理,比如TCP协议需要处理分包.组包.粘包.维护连接列表等,UDP协议需要处理丢包.乱序,而 ...

  3. C#网络编程技术SuperSocket实战项目演练

    一.SuperSocket课程介绍 1.1.本期<C#网络编程技术SuperSocket实战项目演练>课程阿笨给大家带来三个基于SuperSocket通讯组件的实战项目演示实例: ● 基于 ...

  4. Android 网络流量监听开源项目-ConnectionClass源码分析

    很多App要做到极致的话,对网络状态的监听是很有必要的,比如在网络差的时候加载质量一般的小图,缩略图,在网络好的时候,加载高清大图,脸书的android 客户端就是这么做的, 当然伟大的脸书也把这部分 ...

  5. Halcon 和 C# 联合编程 - 如何使用开源项目 ViewROI

    声明 HWndCtrl _viewCtrl; ROIController _roiCtrl; 初始化 _viewCtrl = new HWndCtrl(hWindowControl); _roiCtr ...

  6. C#网络编程技术微软Socket实战项目演练(三)

    一.课程介绍 本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的第三部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集.整理 ...

  7. 网络编程Netty入门:Netty简介及其特性

    目录 Netty的简介 Netty的特性 Netty的整体结构 Netty的核心组件 Netty的线程模型 结束语 Netty的简介 Netty是一个java开源框架,是基于NIO的高性能.高可扩展性 ...

  8. 用Java开源项目JOONE实现人工智能编程

    http://www.robotsky.com/ZhiN/MoS/2011-08-25/13142461416649.html 用Java开源项目JOONE实现人工智能编程 https://sourc ...

  9. 中国首个进入谷歌编程之夏(GSoC)的开源项目: Casbin, 2022 年预选生招募!

    Casbin 明日之星预选生计划-Talent for Casbin 2022 "Casbin 明日之星预选生计划-Talent for Casbin 2022"是什么? &quo ...

随机推荐

  1. 阅读笔记——Web应用程序

    Web应用程序与DD文件 Web应用程序 web应用程序是一种可以通过Web访问的应用程序.Web应用程序最大的好处是永和很容易访问应用程序.用户只需要有浏览器即可,不需要安装其他任何软件.一个Web ...

  2. 2018/8/15 qbxt 测试

    2018/8/15 qbxt 测试 期望得分:100:实际得分:50   不知道为什么写挂了,明明是个水题 T^T 思路:模拟 注意:如果用 char 类型存储的话,如果有'z' + 9 会爆char ...

  3. asp.net Code学习二(使用vs 2015 update 3)

    1.在vs 2015上搭建asp.net core:  安装 .Net core sdk.vs2015 tool 即可使用vs 2015开发asp.net core. 2.Net core中国学习小组 ...

  4. Android提示版本号更新操作流程

    Android提示版本号更新操作流程 2014年5月8日: andorid的app应用中都会有版本号更新的操作,今天空暇的时候就花了点心思弄了一下.主要技术方面用到了AsyncTask异步载入.htt ...

  5. 一筐梨子&amp;一筐水果——协变性(covariant)

    假设突然看见这个问题.我们常常会想当然. 一个梨子是水果,一筐梨子是一筐水果吗? watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXFqMjA2NQ==/f ...

  6. cwRsync 同步时报错 STATUS_ACCESS_VIOLATION

    cwRsync 同步时报错 STATUS_ACCESS_VIOLATION windows XP  执行  cwRsync  同步时报错: 2 [main] rsync 3044 _cygtls::h ...

  7. Android 使用Wake Lock

    为了延长电池的使用寿命,Android设备会在一段时间后使屏幕变暗,然后关闭屏幕显示,最后停止CPU.WakeLock是一个电源管理系统服务功能,应用程序可以使用它来控制设备的电源状态. WakeLo ...

  8. Python产生随机数组,测试用

    import numpy as np if __name__ == '__main__': a=np.random.randint(0,10,size=[3,3])    print(a) 输出: [ ...

  9. 【CS Round #43 E】Coprime Pairs

    [链接]点击打开链接 [题意] 让你选择n个数字,组成一个数组,使得这n个数字中恰好有k对,它们是互质的. [题解] 我们可以先找出前n个质数,那么接下来的问题就转化为,凑出rest = n*(n-1 ...

  10. UVA - 590Always on the run(递推)

    题目:UVA - 590Always on the run(递推) 题目大意:有一个小偷如今在计划着逃跑的路线,可是又想省机票费. 他刚開始在城市1,必须K天都在这N个城市里跑来跑去.最后一天达到城市 ...