
muduo
文章平均质量分 81
陈硕
@bnu_chenshuo
展开
-
发布一个基于 Reactor 模式的 C++ 网络库
Muduo 是我在业余时间编写的基于 Reactor 模式的 C++ 网络库,适用于 Linux 平台,支持多线程。本文主要介绍 muduo 网络库的使用。其设计与实现将有另文讲解。原创 2010-08-29 23:38:00 · 96090 阅读 · 76 评论 -
Muduo 多线程模型:一个 Sudoku 服务器演变
陈硕 (giantchen AT gmail)blog.csdn.net/SolsticeMuduo 全系列文章列表: http://blog.csdn.net/Solstice/category/779646.aspx本文以一个 Sudoku Solver 为例,回顾了并发网络服务程序的多种设计方案,并介绍了使用 muduo 网络库编写多线程服务器的两种最常用手法。以往的例子展现了原创 2011-06-16 13:02:00 · 58838 阅读 · 52 评论 -
Muduo 网络编程示例之六:限制服务器的最大并发连接数
Muduo 网络编程示例之六:限制服务器的最大并发连接数 陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice t.sina.com.cn/giantchen 这是《Muduo 网络编程示例》系列的第六篇文章。 Muduo 全系列文章列表: http://blog.csdn.net/Solstice/category/779646.aspx 本文已以大家都熟悉的 EchoServer 介绍如何限制服务器的并发连接数。 本文的代码见 http://c原创 2011-04-27 00:05:00 · 10311 阅读 · 8 评论 -
Muduo 网络编程示例之七:“串并转换”连接服务器及其自动化测试
Muduo 网络编程示例之七:连接服务器及其自动化测试 陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice t.sina.com.cn/giantchen 这是《Muduo 网络编程示例》系列的第七篇文章。 本文介绍如何使用 test harness 来测试一个具有内部逻辑的网络服务程序。 本文的代码见 http://code.google.com/p/muduo/source/browse/trunk/examples/multiplexer原创 2011-05-02 19:49:00 · 18072 阅读 · 5 评论 -
Muduo 网络编程示例之八:用 Timing wheel 踢掉空闲连接
Muduo 网络编程示例之八:Timing wheel 踢掉空闲连接 陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice t.sina.com.cn/giantchen 这是《Muduo 网络编程示例》系列的第八篇文章,原计划讲文件传输,这里插入一点计划之外的内容。 Muduo 全系列文章列表: http://blog.csdn.net/Solstice/category/779646.aspx 本文介绍如何使用 timing wheel 来踢掉空闲的连原创 2011-05-04 21:24:00 · 31163 阅读 · 47 评论 -
关于 TCP 并发连接的几个思考题与试验
陈硕 (giantchen AT gmail)blog.csdn.net/Solstice前几天我在新浪微博上出了两道有关 TCP 的思考题,引发了一场讨论 http://weibo.com/1701018393/eCuxDrta0Nn 。第一道初级题目是:有一台机器,它有一个 IP,上面运行了一个 TCP 服务程序,程序只侦听一个端口,问:从理论上讲(只考虑 TCP/IP 这一层原创 2011-07-01 12:51:00 · 93358 阅读 · 20 评论 -
发布适合服务端C++程序的高效日志库
PPT 见http://www.slideshare.net/chenshuo/efficient-logging-in-multithreaded-c-server/2012年6月30日在深圳的简短演讲:http://v.youku.com/v_show/id_XNDIyMjUwMDYw.htmlhttp://www.youtube.com/watch?v=KM_eQ6uRYdU代码位于 mud原创 2012-06-06 21:20:25 · 35117 阅读 · 10 评论 -
《Muduo 网络库:现代非阻塞C++网络编程》演讲
2012年6月30日下午将在深圳做《Muduo 网络库:现代非阻塞C++网络编程》演讲,这是PPT:http://www.slideshare.net/chenshuo/muduo-network-library演讲视频:http://v.youku.com/v_show/id_XNDIyNDc5MDMy.htmlhttp://youtu.be/YDnCAs894Bg 活动介绍:http://ou原创 2012-06-29 23:16:27 · 32421 阅读 · 0 评论 -
新书预告:《Linux 多线程服务端编程:使用 muduo C++ 网络库》
看完了 W. Richard Stevens 的传世经典《UNIX 网络编程》, 能照着例子用 Sockets API 编写 echo 服务, 却仍然对稍微复杂一点的网络编程任务感到无从下手? 书中示例代码把业务逻辑和 Sockets 调用混在一起,似乎不利于将来扩展?网络编程中的遇到一些具体问题该怎么办?例如程序在本机测试正常,放到网络运行上就经常出现数据收不全的情况?TCP 协议真的有所谓的“原创 2012-09-21 07:11:15 · 48141 阅读 · 16 评论 -
muduo多机协作网络编程示例一:单词计数及排序
去年我写了《Muduo 网络编程示例》系列文章,这些文章已经收入《Linux 多线程服务端编程:使用 muduo C++ 网络库》一书。这些文章讲的基本都是运行在单机上的网络程序,每个例子都只有一个程序(第7.13节例外)。我接下来打算继续写几篇文章,谈一谈分布在多台机器上、协作发挥作用的网络编程例子。今天先讲第一个,单词计数及排序。单词计数(word count),顾名思义就是统计一个文本文件里原创 2013-01-13 03:59:54 · 39436 阅读 · 7 评论 -
《Linux 多线程服务端编程:使用 muduo C++ 网络库》网上书店订购
《Linux 多线程服务端编程:使用 muduo C++ 网络库》网上书店订购内容简介本书主要讲述采用现代 C++ 在 x86-64 Linux 上编写多线程 TCP 网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即 one loop per thread。这是在 Linux 下以 native 语言编写用户态高性能网络程序最成熟的模式,掌握之后可顺利地开发各类常见的原创 2013-01-11 12:43:50 · 64245 阅读 · 170 评论 -
用muduo实现memcached协议的例子
用muduo实现memcached协议的例子最近花了两天时间用 muduo 部分实现了 memcached 服务器协议,代码位于 examples/memcached/server,能通过 memcached 的大部分测试用例(incr/decr 还没有实现)。这不是 memcached 的替代品(它没有实现LRU和超时功能,也没有实现二进制协议,更没有自己管理内存),而是一个网络编程的示例(代码原创 2013-08-18 13:00:26 · 31262 阅读 · 2 评论 -
《Linux 多线程服务端编程:使用 muduo C++ 网络库》电子版上市
《Linux 多线程服务端编程:使用 muduo C++ 网络库》 电子版已在京东上市销售。购买地址:http://e.jd.com/30149978.html阅读效果:PCiPad目前京东的阅读器没有切白边功能,值得改进。原创 2013-11-01 10:36:44 · 38291 阅读 · 9 评论 -
Muduo 网络编程示例之五: 测量两台机器的网络延迟
Muduo 网络编程示例之五: 测量两台机器的网络延迟 陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice t.sina.com.cn/giantchen 这是《Muduo 网络编程示例》系列的第五篇文章。 Muduo 全系列文章列表: http://blog.csdn.net/Solstice/category/779646.aspx 本文介绍一个简单的网络程序 roundtrip,用于测量两台机器之间的网络延迟,即“往返时间 / round t原创 2011-04-20 09:27:00 · 11667 阅读 · 8 评论 -
Muduo 设计与实现之一:Buffer 类的设计
本文介绍 Muduo 中输入输出缓冲区的设计与实现。 本文中 buffer 指一般的应用层缓冲区、缓冲技术,Buffer 特指 muduo::net::Buffer class。 本文前两节的内容已事先发表在 muduo 英文博客 http://muduo.chenshuo.com/2011/04/essentials-of-non-blocking-tcp-network.html 。 如果文中的图形看不清楚,请移步 http://www.cnblogs.com/Solstice/archive/2原创 2011-04-17 12:26:00 · 34128 阅读 · 98 评论 -
谈一谈网络编程学习经验(06-08更新)
谈一谈网络编程学习经验 陈硕 giantchen@gmail.com blog.csdn.net/Solstice 2011-06-06 PDF 版下载:https://github.com/downloads/chenshuo/documents/LearningNetworkProgramming.pdf本文谈一谈我在学习网络编程方面的一些个人经验。“网络编程”这个术语原创 2011-06-06 08:41:00 · 143612 阅读 · 104 评论 -
muduo 与 boost asio 吞吐量对比
muduo 是一个基于 Reactor 模式的 C++ 网络库,我在编写它的时候并没有以高并发高吞吐为主要目标,但出乎我的意料,ping pong 测试表明,muduo 吞吐量比 boost.asio 高 15% 以上。原创 2010-09-04 16:24:00 · 45692 阅读 · 40 评论 -
击鼓传花:对比 muduo 与 libevent2 的事件处理效率
前面我们比较了 muduo 和 libevent2 的吞吐量,得到的结论是 muduo 比 libevent2 快 18%。有人会说,libevent2 并不是为高吞吐的应用场景而设计的,这样的比较不公平,胜之不武。为了公平起见,这回我们用 libevent2 自带的性能测试程序(击鼓传花)来对比 muduo 和 libevent2 在高并发情况下的 IO 事件处理效率。 结论:在 IO 事件处理效率方面,muduo 与 libevent2 总体比较接近,各擅胜场。在并发量特别大的情况下(大于 10k),m原创 2010-09-08 01:00:00 · 21205 阅读 · 18 评论 -
muduo 与 libevent2 吞吐量对比
libevent 是一款非常好用的 C 语言网络库,它也采用 Reactor 模型,正好可以与 muduo 做一对比。 本文用 ping pong 测试来对比 muduo 和 libevent2 的吞吐量,测试结果表明 muduo 吞吐量平均比 libevent2 高 18% 以上,个别情况达到 70%。原创 2010-09-05 18:43:00 · 34931 阅读 · 18 评论 -
为什么 muduo 的 shutdown() 没有直接关闭 TCP 连接?
今天收到一位网友来信:在 simple 中的 daytime 示例中,服务端主动关闭时调用的是如下函数序列,这不是只是关闭了连接上的写操作吗,怎么是关闭了整个连接?陈硕答复如下:Muduo TcpConnection 没有提供 close,而只提供 shutdown ,这么做是为了收发数据的完整性。原创 2011-02-25 21:30:00 · 13037 阅读 · 8 评论 -
Muduo 网络编程示例之零:前言
我将会写一系列文章,介绍用 muduo 网络库完成常见的 TCP 网络编程任务。这些例子都比较简单,逻辑不复杂,代码也很短,适合摘取关键部分放到博客上。其中一些有一定的代表性与针对性,比如“如何传输完整的文件”估计是网络编程的初学者经常遇到的问题。原创 2011-02-02 00:58:00 · 40619 阅读 · 34 评论 -
Muduo 网络编程示例之一:五个简单 TCP 协议
这是《Muduo 网络编程示例》系列的第一篇文章。本文将介绍五个简单 TCP 网络服务协议的 muduo 实现,包括 echo (RFC 862)、discard (RFC 863)、chargen (RFC 864)、daytime (RFC 867)、time (RFC 868),以及 time 协议的客户端。以上五个协议使用不同的端口,可以放到同一个进程中实现,且不必使用多线程。原创 2011-02-02 12:59:00 · 20282 阅读 · 12 评论 -
Muduo 网络编程示例之二:Boost.Asio 的聊天服务器
这是《Muduo 网络编程示例》系列的第二篇文章。 本文讲介绍一个与 Boost.Asio 的示例代码中的聊天服务器功能类似的网络服务程序,包括客户端与服务端的 muduo 实现。这个例子的主要目的是介绍如何处理分包,并初步涉及 Muduo 的多线程功能。原创 2011-02-04 08:58:00 · 22542 阅读 · 11 评论 -
Muduo 网络编程示例之三:定时器
本文介绍在非阻塞网络编程中定时器的用法与注意事项。原创 2011-02-06 23:05:00 · 17326 阅读 · 21 评论 -
Muduo 网络编程示例之四:Twisted Finger
Python Twisted 是一款非常好的网络库,它也采用 Reactor 作为网络编程的基本模型,所以从使用上与 muduo 颇有相似之处。(当然,muduo 没有 deferreds)Finger 是 twisted 文档的一个经典例子,本文展示如何用 muduo 来实现最简单的 finger 服务端。限于篇幅,只实现 finger01~07。代码位于 examples/twisted/finger 。原创 2011-02-23 21:34:00 · 7548 阅读 · 3 评论 -
Muduo 网络编程示例之九:简单的消息广播服务
本文介绍用 muduo 实现一个简单的 topic-based 消息广播服务,这其实是“聊天室”的一个简单扩展,不过聊天的不是人,而是分布式系统中的程序。原创 2011-05-25 23:22:00 · 20381 阅读 · 12 评论 -
在 muduo 中实现 protobuf 编解码器与消息分发器
陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice t.sina.com.cn/giantchen Muduo 全系列文章列表: http://blog.csdn.net/Solstice/category/779646.aspx 本文是《一种自动反射消息类型的 Google Protobuf 网络传输方案》的延续,介绍如何将前文介绍的打包方案与 muduo::net::Buffer 结合,实现了 protobuf codec 和 dispatcher。原创 2011-04-13 08:12:00 · 24717 阅读 · 36 评论 -
Muduo 网络编程示例之十:socks4a 代理服务器
本文介绍用 muduo 实现一个简单的 socks4a 代理服务器,代码见 http://code.google.com/p/muduo/source/browse/trunk/examples/socks4a/ 。原创 2011-06-02 23:02:00 · 28873 阅读 · 9 评论 -
《Linux 多线程服务端编程》出了多看电子版,繁体版在台湾上市
《Linux 多线程服务端编程》多看电子版:http://www.duokan.com/book/76600《Linux 多线程服务端编程》繁体版由佳魁資訊在台湾出版发行:http://www.books.com.tw/products/0010644288原创 2015-04-19 14:09:10 · 26493 阅读 · 3 评论