c++网络库调研

搜索关键词

C++ 网络库 Network Library TCP Server

网络库总结

开源C/C++网络库比较

http://blog.csdn.net/langeldep/article/details/6976120

在开源的C/C++网络库中,常用的就那么几个,在业界知名度最高的,应该是ACE了,不过是个重量级的大家伙,轻量级的有libevent, libev,还有 Boost的ASIO。

ACEhttp://www.cs.wustl.edu/~schmidt/ACE.html

ACE是一个大型的中间件产品,代码20万行左右,过于宏大,一堆的设计模式,架构了一层又一层,使用的时候,要根据情况,看你从那一层来进行使用。支持跨平台。

ASIOhttp://think-async.com/

Boost的ASIO是一个异步IO库,封装了对Socket的常用操作,简化了基于socket程序的开发。支持跨平台。

libevent

libevent是一个C语言写的网络库,官方主要支持的是类linux 操作系统,最新的版本添加了对windows的IOCP的支持。由于IOCP是异步IO,与linux下的POLL模型,EPOLL模型,还有freebsd的KQUEUE等这些同步模型在用法上完全不一致,所以使用方法也不一样,就好比ACE中的Reactor和Proactor模式一样,使用起来需要转变思路。如果对性能没有特别的要求,那么使用libevent中的select模型来实现跨平台的操作, select模型可以横跨windows, linux, unix,solaris等系统。

libev

libev是一个C语言写的,只支持linux系统的库,我以前研究的时候只封装了EPOLL模型,不知道现在的新版有没有改进。使用方法类似libevent,但是非常简洁,代码量是最少的一个库,也就几千行代码。显然这样的代码跨平台肯定是无法支持的了,如果你只需要在linux下面运行,那用这个库也是可以的。

Muduohttp://code.google.com/p/muduo/

http://blog.csdn.net/solstice/article/category/779646

http://code.google.com/p/muduo/

POCOhttp://pocoproject.org/

http://blog.csdn.net/zhangxinrun/article/details/5914100

POCO的优点:
1) 比boost更好的线程库,特别是一个活动的方法的实现,并且还可设置线程的优先级。
2) 比 boost:asio更全面的网络库。但是boost:asio也是一个非常好的网络库。
3) 包含了一些Boost所不包含的功能,像XML,数据库接口等。
4) 跟Boost相比,集成度更高,是更加统一的一个库。
5) Poco的c++代码更清洁,现代和易理解。对不是模板编程专家的人来说,POCO的代码比大多数Boost库容易理解得多
6) 可以在许多平台上使用
POCO的缺点:
1) 文档有限。但这一定程度上是因为代码的容易理解。
2) 跟Boost相比用户社群小得多。
3) 有多少能集成进C++标准是个问题。而Boost在这方面不是个问题。
许多POCO的用户把POCO和Boost一起并用。
Boost是高质量的库,但它不是个框架。
Boost:asio处理高并发的效率还可以。单连接吞吐稍微弱点。 如果选用,最好封装好,别让boost代码吞噬你的代码,那样最后不可收拾。呵呵。
asio在windows下效率是最好的。基本接近自己在iocp上开发的效率。在linux下,他默认选用epoll, 但中间为了做了层stream cache, 效率稍有损失。而且他的epoll规则用的不太合理,可以自己修改他的代码,达到自己的需求。
在freebsd下,他默认是select的,要自己修改他的代码条件编译,才可以支持kqueue

http://www.cppblog.com/richbirdandy/archive/2010/09/10/123994.html

比较

http://stackoverflow.com/questions/992069/ace-vs-boost-vs-poco

http://stackoverflow.com/questions/474840/boost-vs-ace-c-cross-platform-performance-comparison

Boost.Asio和ACE之间关于Socket编程的比较

http://blog.csdn.net/summerhust/article/details/6595321

信息交换协议

基于 Google protobuf 的 webgame 网络协议设计

http://www.slideshare.net/laiyonghao/google-protobuf-webgame

http://zzk.cnblogs.com/s?w=blog%3ASolstice%20protobuf%20

软件系统开发中的数据交换协议

http://www.infoq.com/cn/news/2011/05/sl-data-exchange-protocol

参考资料

http://webservices.ctocio.com.cn/354/12203854.shtml

http://blog.csdn.net/yuyin86/article/details/6562611

服务器设计和开发的体会

http://www.kuqin.com/system-analysis/20080614/9506.html

http://www.cplusplus.com/

http://www.oschina.net/project/tag/145/networklib?lang=0&os=0&sort=view

时间: 2024-09-26 21:59:21

c++网络库调研的相关文章

SQL Server 2005中的客户端网络库

SQL Server中的客户端网络库可以使客户端应用程序与SQL Server系统进行连接沟通.本文为大家简 单介绍一些关于SQL Server 2005客户端网络库及其使用的知识,包括四个方面:共享内存.虚拟接口适 配器.命名管道和TCP/IP协议. 在SQL Server中,客户端网络库(Client network library)至关重要,是客户端应用程序和SQL Server系统之间连接沟通的桥梁.客户端必须使用和它需要连接的SQL Server系统相同的客户端网络库. 当客户端通过局

基于AFNetworking封装网络库

阅读原文 基于AFNetworking封装网络库 对于开发人员来说,学习网络层知识是必备的,任何一款App的开发,都需要到网络请求接口.很多朋友都还在使用原生的NSURLConnection一行一行地写,代码到处是,这样维护起来更困难了. 对于使用AFNetworking的朋友来说,很多朋友都是直接调用AFNetworking的API,这样不太好,无法做到全工程统一配置. 最好的方式就是对网络层再封装一层,全工程不允许直接使用AFNetworking的API,必须调用我们自己封装的一层,如此一来

windows ndk 编译 boost网络库

问题描述 windows ndk 编译 boost网络库 求指教,小弟,不会弄那个路径,不知道咋配置BOOST路径就指教 解决方案 参考:http://blog.csdn.net/ly131420/article/details/46648125 解决方案二: 在windows下编译boost库如何在WINDOWS下编译BOOST C++库ndk 编译 boost 库

利用百度词典API和Volley网络库开发的android词典应用

 关于百度词典API的说明,地址在这里:百度词典API介绍 关于android网络库Volley的介绍说明,地址在这里:Android网络通信库Volley 首先我们看下大体的界面布局! 再帖张最终的效果图 看到效果图,应该知道布局很简单了对吧: 布局xml文件如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.a

我对开源C++网络库简单应用总结

网上有篇文章<开源免费的C/C++网络库(c/c++ sockets library) 七剑下天山>,看了之后觉得每个库都不错,这里我具体下载这些库看一下,简单总结一下: 顺便添加一些我找到的网络库:     (1)ACE 庞大.复杂,适合大型项目.开源.免费,不依赖第三方库,支持跨平台. http://www.cs.wustl.edu/~schmidt/ACE.html 注:除非特别需要,否则不建议:   (2)Asio Asio基于Boost开发的异步IO库,封装了Socket,简化基于s

谈谈网络库和Retrofit

本文目录如下 网络模块需要具备什么能力 为什么Retrofit是个好选择 Retrofit业务分析 Retrofit技术点 设计模式 一.网络模块需要具备什么能力? 常见的需求下图: 下面解释一下重要的部分. 1.支持缓存 为了让页面快速展现,很多页面需要先加载缓存.通用策略是 1.先加载缓存;2.然后做网络请求3.网络请求成功后刷新页面,并且更新缓存数据 这里涉及到,缓存要存在哪里. 一般也是两种方案: 业务侧做缓存. 每个页面自己维护缓存,一般存在db/sp/文件系统中 网络侧做缓存, 业务

开源免费的C/C++网络库(c/c++ sockets library)

(1)ACE 庞大.复杂,适合大型项目.开源.免费,不依赖第三方库,支持跨平台. http://www.cs.wustl.edu/~schmidt/ACE.html   (2)Asio Asio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发. 开源.免费,支持跨平台. http://think-async.com/   (3)POCO POCO C++ Libraries 提供一套 C++ 的类库用以开发基于网络的可移植的应用程序,功能涉及线程.线程同步.文件

开源免费的C/C++网络库(c/c++ sockets library) 七剑下天山

(1)ACE 庞大.复杂,适合大型项目.开源.免费,不依赖第三方库,支持跨平台. http://www.cs.wustl.edu/~schmidt/ACE.html   (2)Asio Asio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发. 开源.免费,支持跨平台. http://think-async.com/   (3)POCO POCO C++ Libraries 提供一套 C++ 的类库用以开发基于网络的可移植的应用程序,功能涉及线程.线程同步.文件

从孙子兵法看网络营销调研五种方法

中介交易 SEO诊断 淘宝客 云主机 技术大厅 孙子曰:"将所以动而胜人,成功出于众者,先知也".任何商业活动,包括网营的成功与否,都与其是否有充分.科学和有效的市场调研密切相关. 市场调研的方法很多,这里从"故用间有五:有乡间,有内间,有反间,有死间,有生间."逐个说开,讨论一些常用的市场调查方法. 一."乡间"-二手资料收集 乡间者,原意是对乡民或坊间传播的信息作为情报来源进行分析;市场调查方法中,二手资料收集是对各类社会舆论.媒体信息.搜索