Netty学习笔记(三)Channel、EventLoop等接口一览,全是知识点请背出

Channel、EventLoop和channelfuture

  1. Channe接口:
    基本的IO操作(bind()、connect()、read()、write())依赖于底层网络传输所提供的原语。
    在这里插入图片描述

  2. EventLoop接口
    用于处理连接的生命周期中所发生的事件。
    在这里插入图片描述
    下面的内容原地请背出:

    • 一个EventLoopGroup包含一个或多个EventLoop;
    • 一个EventLoop在他的生命周期内只和一个Thread绑定;
    • 所有由EventLoop处理的IO事件都将在他专有的Thread上被处理;
    • 一个Channel在他的生命周期内只注册一个EventLoop;
    • 一个EventLoop可能会被分配给多个Channel。
  3. ChannelFuture接口:
    Netty中所有的操作都是异步的,一个操作可能不会立即返回,所以需要一种用于在之后确定其结果的方法。 ChannelFuture接口的addListenter()方法注册了一个ChannelFutureListener,以便在操作完成时得到通知。

ChannelHandler和ChannelPipeline

  1. ChannelHandler接口:
    是所有处理入站和出站数据的应用程序逻辑的容器。

  2. ChannelPipeline接口:
    当Channel被创建后,会被自动分配到它专属的pipeline中,过程如下,知识点要考的:

    • 一个ChannelInitializer的实现被注册到了ServerBootstrap中;
    • 当ChannelInitializer.nitChannel()被调用时,ChannelInitializer将在pipeline中安装一组自定义的ChannelHandler;
    • ChannelInitializer将自己从pipeline中移除。
      注:ChannelHandle的工作便是使得事件流经Pipeline,当ChannelHandler被添加到pipeline时,它会被分配一个ChannelHandlerContext,主要用于写出站数据(客户端——服务端认为是出站)。
      在这里插入图片描述
    1. 引导类
      有两种类型的引导,一种用于客户端(Bootstrap),一种用于服务器(severBootstrap),之前我们使用过了。
      在这里插入图片描述
      服务器这边:
      第一组只包含一个ServerChannel,代表服务器已经绑定到某个端口的正在监听的套接字;第二组包含所有已经创建的用来处理客户端连接的Channel。
      在这里插入图片描述
发布了28 篇原创文章 · 获赞 5 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览