今天不先实现muduo项目,我们先来看下muduo库的基本使用,只有了解了如何用,才能在写代码的时候知道自己写的找个函数是干嘛的,实际上是怎么使用的这个函数。首先说简单点,就是定义一个Server,设置两个回调函数

// 回调连接相关的事件
void onConnection(const TcpConnectionPtr &conn);
// 回调读写事件
void onMessage(const TcpConnectionPtr &conn, Buffer *buffer, Timestamp time);

意思就是当有客户连接或者断开连接的时候,需要Server做什么,当连接上有读写事件发生时候,需要Server做什么。

比如一个EchoServer,当建立连接的时候,会自动调用onConnection函数,当比如我们发送一个消息时候,会自动调用onMessage函数。还有2个重要函数loopstart

server.start();
loop.loop();

这里简答讲下这2个的区别,其实如果和Epoll做对比的话,start就相当于epoll_createloop就相当于epoll_wait,后面再根据代码具体说明2个的区别。

以上就是基本的muduo使用,下一章就开始具体的muduo代码实现。

自己的网址:www.shicoder.top

欢迎加群聊天 452380935

本文由博客一文多发平台 OpenWrite 发布!

muduo源码分析之muduo简单运用的更多相关文章

  1. muduo源码分析之Buffer

    这一次我们来分析下muduo中Buffer的作用,我们知道,当我们客户端向服务器发送数据时候,服务器就会读取我们发送的数据,然后进行一系列处理,然后再发送到其他地方,在这里我们想象一下最简单的Echo ...

  2. 容器_JDK源码分析_自己简单实现ArrayList容器

    这几天仔细研究下关于ArrayList容器的jdk源码,感觉收获颇多,以前自己只知道用它,但它里面具体是怎样实现的就完全不清楚了.于是自己尝试模拟写下java的ArrayList容器,简单了实现的Ar ...

  3. Flink源码分析 - 剖析一个简单的Flink程序

    本篇文章首发于头条号Flink程序是如何执行的?通过源码来剖析一个简单的Flink程序,欢迎关注头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech) ...

  4. WorkerMan源码分析 - 实现最简单的原型

    之前一直认为workerman源码理解起很复杂,这段时间花了3个下午研究,其实只要理解 php如何守护化进程.信号.多进程.libevent扩展使用,对于如何实现就比较轻松了. 相关代码都在githu ...

  5. muduo源码分析之TcpServer模块

    这次我们开始muduo源代码的实际编写,首先我们知道muduo是LT模式,Reactor模式,下图为Reactor模式的流程图[来源1] 然后我们来看下muduo的整体架构[来源1] 首先muduo有 ...

  6. muduo源码分析:组成结构

    muduo整体由许多类组成: 这些类之间有一些依赖关系,如下:

  7. muduo源码分析之回调模块

    这次我们主要来说说muduo库中大量使用的回调机制.muduo主要使用的是利用Callback的方式来实现回调,首先我们在自己的EchoServer构造函数中有这样几行代码 EchoServer(Ev ...

  8. Spring源码分析 手写简单IOC容器

    Spring的两大特性就是IOC和AOP. IOC Container,控制反转容器,通过读取配置文件或注解,将对象封装成Bean存入IOC容器待用,程序需要时再从容器中取,实现控制权由程序员向程序的 ...

  9. jQuery 源码分析 8: 回头看jQuery的构造器(jQuery.fn,jQury.prototype,jQuery.fn.init.prototype的分析)

    在第一篇jQuery源码分析中,简单分析了jQuery对象的构造过程,里面提到了jQuery.fn.jQuery.prototype.jQuery.fn.init.prototype的关系. 从代码中 ...

随机推荐

  1. 事务的 ACID 是指什么?

    原子性(Atomic):事务中各项操作,要么全做要么全不做,任何一项操作 的失败都会导致整个事务的失败: 一致性(Consistent):事务结束后系统状态是一致的: 隔离性(Isolated):并发 ...

  2. linux上使用nginx、uwsgi部署django项目

    参考:CentOS7下部署Django项目详细操作步骤 注意事项: 在虚拟环境中操作,虚拟环境中安装nginx.uwsgi,虚拟环境外需安装uwsgi -- 临时关闭防火墙:systemctl sto ...

  3. spring 事务实现方式有哪些?

    Spring提供了编程式事务和声明式事务两种实现方式, 编程式事务允许用户在代码中精确定义事务的边界, 而声明式事务(基于AOP)有助于用户将操作与事务规则进行解耦. 简单地说,编程式事务侵入到了业务 ...

  4. 初识Spring(为什么要使用Spring?)

    Spring,英文翻译是春天的意思,而在Java中,是一个开放源代码的设计层面框架(手动滑稽,程序员的春天),他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.S ...

  5. redis主从复制与哨兵高可用

    redis主从复制 话不多说,直接看案例: 环境准备, 主从规划 主节点:6380 从节点:6381.6382 运行3个redis数据库,达到 1主 2从的配置 #主库 6379.conf port ...

  6. MySQL怎么用命令修改字段名

    一.SQL MySQL怎么用命令修改字段名的 -- alter table 表名 change 旧属性 新属性 新的数据类型 ==>(可以不写) COMMENT '备注' ALTER TABLE ...

  7. 10.Flink实时项目之订单维度表关联

    1. 维度查询 在上一篇中,我们已经把订单和订单明细表join完,本文将关联订单的其他维度数据,维度关联实际上就是在流中查询存储在 hbase 中的数据表.但是即使通过主键的方式查询,hbase 速度 ...

  8. C语言类型转换原理

    C语言类型转换 int a; a=1.23 这里把1.23赋值给a发生了隐式转换,原理如下: int a; float b=3.14; a=b; b赋值给a的过程:首先找一个中间变量是a的类型(该例中 ...

  9. translate3d 对 z-index 居然有影响

    在 Mobile 端需要注意. 安卓 默认浏览器 当中如果 div1 div2 如果 div1 有 translate3d 而 div2 没有 那么 div2 的 z-index 会无效. 解决办法: ...

  10. Android实现蓝牙远程连接遇到的问题

    主要问到的问题:1.uuid获取不到,一直为空,后来发现android4.2之前使用uuid这种方法,目前尽量不使用uuid方式 2.socket.connect()出错,报read failed, ...