|
Muduo 是基于 Reactor 模式的网络库,其中心是个事件轮回 EventLoop,用于响应计时器和 IO 事件。Muduo 采用基于对象(object based)而非面向对象(object oriented)的设计作风,其。 $ cd muduo/ 类图 -- chat # 聊天服务 muduo 编译办法很简单: `-- tutorial # 一系列 timers $ tar zxf muduo-0.1.0-alpha.tar.gz -- chargen # RFC 864,可测试带宽 由来$ ./build.sh -- roundtrip # 测试两台机器的网络延时与时间差 本文重要先容 muduo 网络库的应用,太阳城代理。其设计与实现将有另文讲授。 -- echo # RFC 862 陈硕 (giantchen_AT_gmail) 这里简单介绍各个头文件及 class 的作用,具体的介绍留赐与后的博客。 公然接口内部实现-- discard # 可用于测试带宽,服务器可多线程运行 # 编译生成的可执行文件和静态库文件分离位于 ../build/debug/{bin,lib} -- daytime # RFC 867 1. 单线程,accept 与 TcpConnection 用同一个线程做 IO。 examples
`-- poller # poll(2) 和 epoll(4) 两种 IO multiplexing 后端 本文主要介绍 muduo 网络库的使用,其设计与实现将有另文讲解。 SHA1 Checksum: 5d3642e311177ded89ed0d15c10921738f8c984c Muduo 的头文件明白分为客户可见跟客户不可见两类。客户可见的为白底,客户不可见的为灰底。 $ sudo apt-get install cmake 半年前我写了一篇《》,其中提到“我心目中幻想的网络库”的样子: `-- finger # finger01 ~ 07 -- asio # 从 Boost.Asio 移植的例子 假如要编译 release 版,可执行 -- echo # 可用于测试带宽,服务器可多线程运行 例子-- allinone # 在一个程序里同时实现下面 5 个协议 -- inspect # 基于以上 web 服务器的“窥测器”,用于讲演过程的状况 结语Muduo 依附 Boost,很轻易装置: -- simple # 简单网络协议的实现 Muduo 附带了多少十个小例子,太阳城娱乐网,位于 examples 目录。其中包含从 Boost.Asio、JBoss Netty、Python Twisted 等处移植过来的例子。 -- netty # 从 JBoss Netty 移植的例子 目录 Muduo 的目录构造如下。 下载与编译`-- uptime # TCP 长连接 # 编译天生的可履行文件和静态库文件分辨位于 ../build/release/{bin,lib} $ BUILD_TYPE=release ./build.sh `-- net # 网络库 下载地址: -- base # 与网络无关的基本代码,已 宣布一个基于 Reactor 模式的 C++ 网络库 在想明白这些目的之后,我开始第三次尝试编写自己的 C++ 网络库。与前两次不同,这次我一开端就想好了库的名字,皇冠新2现金网,叫 muduo (木铎),并在 Google code 上创建了名目: 。muduo 的主体内容在 5 月底已经基础完成,当初我把它开源。 -- hub # 一个简略的 pub/sub/hub 服务,演示利用级的播送 -- discard # RFC 863 后记:机能测试: `-- twisted # 从 Python Twisted 移植的例子 -- time # RFC 868 2. Blog.csdn.net/Solstice $ sudo apt-get install libboost1.40-dev # 或 libboost1.42-dev Muduo 的线程模型合乎我主意的 模型。每个线程最多有一个 EventLoop。每个 TcpConnection 必需归某个 EventLoop 治理,所有的 IO 会转移到这个线程,换句话说一个 file descriptor 只能由一个线程读写。TcpConnection 所在的线程由其所属的 EventLoop 决议,这样咱们可以很便利地把不同的 TCP 连接放到不同的线程去,也可以把一些 TCP 连接放到一个线程里。TcpConnection 和 EventLoop 是线程保险的,能够跨线程调用。TcpServer 直接支撑多线程,它有两种模式: 2010 Aug 30 线程模型1. 2. 多线程,accept 与 EventLoop 在统一个线程,另外创立一个 EventLoopThreadPool,新到的衔接会按 round-robin 方法调配到线程池中。 根本结构`-- timeclient # time 协定的客户端 -- http # 一个简单的可嵌入的 web 服务器 Muduo 是我对常见网络编程义务的总结,用它我能很容易地编写多线程的 TCP 服务器和客户端。Muduo 是我业余时光的作品,代码估量还有良多 bug,百家乐开户,功效也不完美(例如不支持 signal 处置),待日后缓缓改良吧。 Muduo 使用了 ,请求 Linux 的内核版本大于 2.6.28 (我本人用的是 2.6.32 )。在 Debian Squeeze / Ubuntu 10.04 LTS 上编译测试通过,32 位和 64 位体系都能使用。 3. 编译实现之后请试运行其中的例子。比方 bin/inspector_test ,而后通过阅读器拜访 http://10.0.0.10:12345/ 或 http://10.0.0.10:12345/proc/status,其中 10.0.0.10 调换为你的 Linux box 的 IP。 Muduo 采取 CMake 为 build system,安装方式: (责任编辑:admin) |
