“Hello World”的代码固然简单,不过其中的几个重要概念(类)和 Netty的工作原理还是需要简单明确一下,至少知道其是负责什。方便自己以后更灵活的使用和扩展。

ChannelEvent

先说这个ChannelEvent,因为Netty是基于事件驱动的,就是我们上文提到的,发生什么事,就通知”有关部门”。所以,不难理解,我们自己的业务代码中,一定有跟这些事件相关的处理。在样例代码,我们处理的事件,就是channelConnected。以后,我们还会处理更多的事件。

ChannelPipeline

Pipeline,翻译成中文的意思是:管道,传输途径。也就是说,在这里他是控制ChannelEvent事件分发和传递的。事件在管道中流转,第一站到哪,第二站到哪,到哪是终点,就是用这个ChannelPipeline处理的。比如:开发事件。先给A设计,然后给B开发。一个流转图,希望能给你更直观的感觉。

ChannelHandler

刚说Pipeline负责把事件分发到相应的站点,那个这个站点在Netty里,就是指ChannelHandler。事件到了ChannelHandler这里,就要被具体的进行处理了,我们的样例代码里,实现的就是这样一个处理事件的”站点”,也就是说,你自己的业务逻辑一般都是从这里开始的。

有了个部门的协调处理,我们还需要一个从整体把握形势的,所谓”大局观”的部门,channel

channel,能够告诉你当前通道的状态,是连同还是关闭。获取通道相关的配置信息。得到Pipeline等。是一些全局的信息。Channel自然是由ChannelFactory产生的。Channel的实现类型,决定了你这个通道是同步的还是异步的(nio)。例如,我们样例里用的是NioServerSocketChannel

netty大白话--概念(二)相关推荐

  1. 看《墨攻》理解IoC概念(二 )http://www.qqread.com/erp/3/j380307_3.html

    看<墨攻>理解IoC概念(二) 巧巧电脑网络 2007-11-07  IT168 陈雄华   收藏此文  大 中 小 分享到QQ空间人人网开心网豆瓣新浪微博腾讯微博更多0 上一页123下一 ...

  2. Netty学习笔记二网络编程

    Netty学习笔记二 二. 网络编程 1. 阻塞模式 阻塞主要表现为: 连接时阻塞 读取数据时阻塞 缺点: 阻塞单线程在没有连接时会阻塞等待连接的到达,连接到了以后,要进行读取数据,如果没有数据,还要 ...

  3. Netty 内存池(二)内存申请流程

    Netty 内存池(二)内存申请流程 上期带大家了解了一下Netty内存池都有哪些重要的对象,以及这些对象的作用是什么,本期就带大家分析一下线程是如何申请一块内存的.本期由于涉及到了很多变量和位运算, ...

  4. C#基础概念二十五问 【二】 [转]

    11.可以使用抽象函数重写基类中的虚函数吗? 答: 可以 需使用 new 修饰符显式声明,表示隐藏了基类中该函数的实现 或增加 override 修饰符,表示抽象重写了基类中该函数的实现 示例: cl ...

  5. Netty 框架学习(二):Netty粘包和拆包

    文章目录 一.什么是粘包和拆包 二.粘包和拆包示例代码 1.TimeServerHandler 2.TimeClientHandler 三.使用Netty解决粘包和拆包 1.TimeServerHan ...

  6. Netty入门(二)时间服务器及客户端

    在这个例子中,我在服务器和客户端连接被创立时发送一个消息,然后在客户端解析收到的消息并输出.并且,在这个项目中我使用 POJO 代替 ByteBuf 来作为传输对象. 一.服务器实现 1.  首先我们 ...

  7. netty大白话--字符串的收发(三)

    了解了Netty的基本概念,开发起来应该会顺手很多.在"Hello World"代码中,我们只是在完成绑定的时候,在各自的本地打印了简单的信息,并没有客户端和服务端的消息传递.这个 ...

  8. C#面向对象 基础概念二十五个 (很基础,必须掌握的知识)

    1.静态成员和非静态成员的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思? 4.abstract 是什么意思? 5.internal 修饰符起什么作用 ...

  9. C#基础概念二十五问[转]

    注:本文部份资料来自网络,如有侵权,请与我联系,我会在第一时间声明引用或将其删除! 当初学 C# 时是找个人大概问了一下数据类型和分支语句就开始做项目了.这两天又全面的看了一下相关的基础知识(学而时习 ...

最新文章

  1. ES5和6的一些新特性
  2. oracle和ibatis学习
  3. Ubuntu下eclipse indigo版在线安装struts插件
  4. 文件上怎么盖章_投标文件该怎么盖章呢?投标人必看!
  5. 浅谈基于Linux的Redis环境搭建
  6. JS之数组删除/添加项目方法splice
  7. java内存shell_Springboot 内存shell
  8. 郑州轻工业学院OJ-杨辉三角
  9. 前端—每天5道面试题(十)
  10. 【网络安全工程师面试合集】—邮件协议是如何被安全人员利用的?
  11. django模板层 (标签,过滤器,自定义inclusion_tag,模板的继承与导入)
  12. SetWindowsHookEx 其他进程的 记录
  13. 一道和逆向和溢出有关的竞赛题分析
  14. 原工信部副部长杨学山:重基础,促创新,求实效,转观念
  15. 60、在Visual Studio 2019 环境下,使用C#调用C++生成的dll实现yolov5的图片检测
  16. Modbus RTU/ASCll+TCP+OPC电脑模拟+串口调试软件对接方案
  17. 吉林大学计算机网络考研知识点整理
  18. 静态代码自动扫描p3c的使用
  19. 让 ESS 更灵活的新特性:UserData KeyPair RamRole Tags
  20. Python数据分析与展示-图像的手绘效果

热门文章

  1. Oracle data integrator 11g安装配置和一个实例应用指南pdf
  2. CodeFirst Update-Database 出现对象'DF__**__**__**' 依赖于 列'**'。
  3. 最短路径之dijkstra算法的C语言实现
  4. Castle ActiveRecord学习实践(6):延迟加载和使用Where子句
  5. xadmin获取mysql_Django+Xadmin构建项目的方法步骤
  6. windows系统下修改mysql时区_Linux与Windows下修改MySql时区的方法
  7. 2维数组 qt_Qt编写地图综合应用11-动态添加
  8. python2.7安装教程win7_win7 64位环境下,为python2.7 安装pip
  9. python pip3 pip_Python:pip 和pip3的区别
  10. c语言jam的随机数,c – 如何重置随机数引擎?