前提介绍:

  本人是一名大三学生,主要使用C++开发,兴趣是高性能的服务器方面。

  网络开发离不开网络库,所以今天开始学一个新的网络库,陈老师的muduo库

  我参考的书籍就是陈老师自己关于muduo而编著这本《linux多线程服务器编程》

为什么选择muduo网络库:

  我当初选择muduo网络库有三个方面的原因,第一点就是muduo网络库的代码完全开源,我们可以很轻松的通过看muduo的源码来分析muduo在服务器开发中到底使用了什么技术

  其次muduo的框架并不是特别的复杂, 适合本人这种小白学习,并不是ACE那种特别庞大的网络库,不适合人来学习

  muduo的C++写法十分符合最新的C++写法,大部分使用了C++11的新特性,而不像很多其他开源C++网络库,里面还是会看到C的影子,更适合我们了解原本的C++而不被C的东西带偏了

muduo的下载与安装(本人使用ubuntu18.10)

  muduo的源码在github上面就能找到,但是编译和安装,你需要安装一些基础工具

  首先安装cmake:

    sudo apt-get install cmake

  muduo依赖于Boost:

    sudo apt-get install libboost-dev libboost-test-dev

  muduo还有三个非必须的依赖库,example有些事例依赖于这些

    sudo apt-get install libcurl4-openssl-dev libc-ares-dev

    sudo apt-get install protobuf-compiler libprotobuf-dev

  muduo的编译方法也很简单(我用的muduo-2.0.0):

    tar zxf muduo-2.0.0.tar.gz

    cd muduo/

    ./build.sh -j2

  如果想使用的话,需要讲编译出来的文件夹里面的lib导入到你的/usr/lib文件夹中

  头文件也可以放到/usr/include文件夹中,这样你就可以使用<>导入头文件

muduo的结构目录:

  我们可以使用tree命令来查看这个网络库文件的架构

  如果没有tree工具,可以在ubuntu上面直接使用apt安装

  这里可以看见一个example,里面含有大量的测试事例,我们可以通过这些例子来充分学习muduo网络库的知识和用法

muduo 网络库学习之路(一)的更多相关文章

  1. muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor

    目录 muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor Connector 系统函数connect 处理非阻塞connect的步骤: Connetor时序图 Accep ...

  2. muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制

    目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...

  3. muduo网络库学习笔记(三)TimerQueue定时器队列

    目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结 ...

  4. muduo网络库学习之MutexLock类、MutexLockGuard类、Condition类、CountDownLatch类封装中的知识点

    一.MutexLock 类 class  MutexLock  :  boost::noncopyable 二.MutexLockGuard类 class  MutexLockGuard  :  bo ...

  5. muduo网络库学习笔记(10):定时器的实现

    传统的Reactor通过控制select和poll的等待时间来实现定时,而现在在Linux中有了timerfd,我们可以用和处理IO事件相同的方式来处理定时,代码的一致性更好. 一.为什么选择time ...

  6. muduo网络库架构总结

    目录 muduo网络库简介 muduo网络库模块组成 Recator反应器 EventLoop的两个组件 TimerQueue定时器 Eventfd Connector和Acceptor连接器和监听器 ...

  7. muduo网络库源码学习————Timestamp.cc

    今天开始学习陈硕先生的muduo网络库,moduo网络库得到很多好评,陈硕先生自己也说核心代码不超过5000行,所以我觉得有必要拿过来好好学习下,学习的时候在源码上面添加一些自己的注释,方便日后理解, ...

  8. 长文梳理muduo网络库核心代码、剖析优秀编程细节

    前言 muduo库是陈硕个人开发的tcp网络编程库,支持Reactor模型,推荐大家阅读陈硕写的<Linux多线程服务端编程:使用muduo C++网络库>.本人前段时间出于个人学习.找工 ...

  9. muduo网络库使用心得

    上个月看了朋友推荐的mudo网络库,下完代码得知是国内同行的开源作品,甚是敬佩.下了mudo使用手冊和035版的代码看了下结构,感觉是一个比較成熟并且方便使用的网络库.本人手头也有自己的网络库,尽管不 ...

随机推荐

  1. samba 使用tips

    安装: 推荐使用新立德包管理器安装 SAMBA配置文件: /etc/samba/smb.conf Samba服务器的启动与关闭: sudo /etc/init.d/smbd start ubuntu访 ...

  2. 131.008 Unsupervised Learning - Principle component Analysis |PCA | 非监督学习 - 主成分分析

    @(131 - Machine Learning | 机器学习) PCA是一种特征选择方法,可将一组相关变量转变成一组基础正交变量 25 PCA的回顾和定义 Demo: when to use PCA ...

  3. eclipse使用git命令行

    idea自带git命令,可以很方便的进行提交代码.eclipse怎么做呢,下面我简单操作一下: 第一步: 第二步: 第三步: 这样就调出来git提交的命令窗口了: 运行成功如下: 注意: git的安装 ...

  4. 【转】grep -v grep

    1.grep 是查找含有指定文本行的意思,比如grep test 就是查找含有test的文本的行 2.grep -v 是反向查找的意思,比如 grep -v grep 就是查找不含有 grep 字段的 ...

  5. Prometheus Node_exporter 之 Basic Net / Disk Info

    1. Network Traffic Basic 每个接口的基本网络信息 type: GraphUnit: bytesrecv {{device}} 各个网络接口的下载量 recv lo: 本地环回接 ...

  6. Django之模型注册

    接着上一篇:Django之创建项目 目的:一个空项目创建好了,我们在models.py中新增3张表并在admin界面中显示,并能操作它们. 示例models 编辑models.py # -*- cod ...

  7. Python-Image 基本的图像处理操作

    Python-Image 基本的图像处理操作,有需要的朋友可以参考下. Python 里面最常用的图像操作库是 Image library(PIL),功能上,虽然还不能跟Matlab比较,但是还是比较 ...

  8. Oracle常见等待事件

    1Buffer busy waits从本质上讲,这个等待事件的产生仅说明了一个会话在等待一个Buffer(数据块),但是导致这个现象的原因却有很多种.常见的两种是: ·         当一个会话视图 ...

  9. 用UIControl封装Button

    用UIControl封装Button 效果 说明 UIControl在处理超出触摸范围的触摸事件时有bug 源码 基础类 // // BaseControl.h // BaseControl // / ...

  10. Linux 系统的网络配置文件

    系统的网络配置文件 方式一: 界面操作 setup -->界面配置网络,网关等 方式二: 修改配置文件 # 修改配置 vim /etc/sysconfig/network-scripts/ifc ...