这个repo是学习c++ 网路库muduo的。里面的代码基本上是从muduo的仓库上面来下来的,一些个别的代码是为了理解和学习,我自己修改的。
安装
https://github.com/chenshuo/muduo 在这里拉下代码。
# 第一步,安装cmake和boost
sudo apt-get install cmake
# 安装boost
sudo apt-get install libboost-dev libboost-test-dev
# 第二步
cd muduo
./build.sh -j2
./build.sh install
#release 版本
BUILD_TYPE = release ./build.sh -j2
BUILD_TYPE = release ./build.sh install
目录结构
.
├── build # 编译之后产生的例子,头文件和静态库
├── muduo-master # 这个是muduo的源码
├── muduo_tutorial # 自己学习源码的过程中,写的一些代码
└── readme.md
前置技能,看这本书之前,应该熟悉socket基本的api和linux下c++的编程。
这里有一个ttcp的例子,是用原生的socket api 写的。
https://github.com/zhaozhengcoder/muduo/tree/master/muduo_tutorial/ttcp
这是一个netcat的例子,这个稍微封装了一下。很专业一点。
https://github.com/zhaozhengcoder/muduo/tree/master/example/my_rebuild_example/netcat
在看源码之前,先思考几个问题,如何要自己开发一下网络库,对于下面的问题,如何回答?
[muduo的主线程accepte的fd如何分发给其他线程?]
[muduo的定时器如何实现?]
[muduo如何限制连接的数量?]
[muduo如何设计buffer?]
[muduo的定时器是如何设计的?]
[如何安全的关闭tcp连接,能不能直接close,如何直接close会发生什么?]
[muduo是如何 线程安全的对 对象的声明周期进行管理?]
其他的一些关于收获
使用shard_ptr 和 weak_ptr 进行资源管理
使用bind注册回调函数,比用虚函数的方式实现,更舒服。
作者很贴心的提供了一个recipes的目录,把核心框架的实现过程拆分了出来。
连接:https://github.com/zhaozhengcoder/muduo/tree/master/muduo_tutorial/recipes/reactor
最近正在学习muduo中,学习中遇到的问题和收获,后面慢慢更新。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。