网络库总结
来源:互联网 发布:webstorm mac 破解版 编辑:程序博客网 时间:2024/05/21 02:54
开源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
- C++网络库总结
- C++网络库总结
- C++网络库总结
- C++网络库总结
- C++网络库总结
- 网络库总结
- 网络请求库比较总结
- 网络总结
- 网络总结
- 网络总结
- 【网络】网络基础知识总结
- Retrofit网络访问库使用总结
- Muduo网络库学习知识点总结
- 网络分层&&网络协议 总结
- Android总结 - 网络请求总结
- Windows网络体系结构总结
- Windows网络体系结构总结
- Windows网络体系结构总结
- MPMoviePlayerViewController 播放完不退出
- junit作为多线程环境的启动入口
- CorePlot学习一
- levelDB的安装与小范例
- c++中的继承中的问题
- 网络库总结
- struts2 常量配置及详解
- We7的区县网站群建设策略
- 使用Splatting在PowerShell中传递参数
- linux 进程间信号量管理程序之sem_timedwait使用
- 赵雅智_Android Paint
- 线程同步
- 2.6.30.4内核cmdline常用命令行参数与相应处理函数
- 最长递增子序列 Longest Incresing Subsequence