zoukankan      html  css  js  c++  java
  • 四、netty channel pipeline

    所有文章

    https://www.cnblogs.com/lay2017/p/12922074.html

    正文

    ChannelPipeline是netty中非常核心的概念之一。每个SocketChannel都会包含ChannelPipeline,ChannelPipeline包含一系列ChannelHandler。ChannelHandler将在数据读取或者写入SocketChannel的时候调用。

    ChannelHandler有两个子接口

    1.ChannelInboundHandler

    2.ChannelOutboundHandler

    你可以同时添加这两个,如图

     如图所示,当从SocketChannel读取数据以后,会按照ChannelInboundHandler顺序调用处理数据,前一个ChannelInboundHandler处理改变数据结构,比如把字节数据转换成Http的请求。而如果要写入数据到SocketChannel,按照ChannelOutboundHandler的顺序执行。

    注意,上图把Inbound和Outbound分离展示,事实上它们在Pipeline中是以同一个集合列表存在的。也有可能第二个ChannelInboundHandler想要处理数据输出,如图

     编解码

    netty有编解码的概念,编解码器把byte转Java对象,或者把Java对象转byte。编解码器事实上也就是一个ChannelHandler,也可能是两个ChannelHandler。不管怎么说,编解码器需要实现ChannelInboundHandler将byte转Java对象,以及ChannelOutboundHandler把Java对象转byte。

    netty内置的编解码器有http、websocket、ssl、tlv等,你只需要添加到pipeline即可使用。

  • 相关阅读:
    ovs tag
    从数据库分析OpenStack创建虚机流程
    Neutron中的二层网络服务架构
    Failed to bind port
    OpenStack网络参数segment
    OpenStack与SDN控制器的集成
    HDU 3709 Balanced Number
    HDU 5787 K-wolf Number
    HDU 5803 Zhu’s Math Problem
    CodeForces 258B Little Elephant and Elections
  • 原文地址:https://www.cnblogs.com/lay2017/p/12922436.html
Copyright © 2011-2022 走看看