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即可使用。

  • 相关阅读:
    linux上实现jmeter分布式压力测试(转)
    The more,the better。
    DP_括号匹配序列问题
    MySQL基础语句
    大端模式和小端模式
    C++:bitset用法
    TCP三次握手和四次握手
    静态库与动态库
    DP_最长公共子序列/动规入门
    二维数组和指针
  • 原文地址:https://www.cnblogs.com/lay2017/p/12922436.html
Copyright © 2011-2022 走看看