关于netty的编解码
关于netty的编解码学习,一般涉及到数据的出站与入站,在出站时调用编码、在入站时调用解码,编解码都是成对出现,不能出现只有一个。
netty的编解码类别
netty的编解码类别主要分为以下三种
- ByteToMessage 入站解码
- MessageToByte 出站编码
MessageToMessage 出站入站均可(编解码)
解码继承:ByteToMessageDecoder,该类继承ChannelInboundHandlerAdapter 该类为进站处理
- 编码继承:MessageToByteEncoder,该类继承ChannelOutboundHandlerAdapter 该类为出站处理
例子实现编解码用一个组合handler来表示编解码(前两种)
1 | 例如: |
使用codec可以统一编解码(前两种)
- 使用codec 实现编解码一体
1 | package com.bj.hz.dzj; |
使用codec实现第三种
该类型主要实现编码中协议(例如api等)转换
1 | public class MyMessagetoMessage extends MessageToMessageCodec<Integer,String> { |
使用ReplayingDecoder,来实现自动转换,当bytebuf中没有能够转换的足够字节,则会一直等待足够才会转换
1 | package com.bj.hz.dzj; |