继Netty自定义序列化编解码器的解决粘包/半包问题的编解码方案方案一:使用LengthFieldPrepender与LengthFieldBasedFrameDecoder
- 原理
通过改造编解码器,将LengthFieldPrepender与LengthFieldBasedFrameDecoder的功能直接写在自定义编解码器中,这样就不需要使用LengthFieldPrepender与LengthFieldBasedFrameDecoder了
- 代码
1.CustomV2Encoder
/**
* @author pdc
*/
public class CustomV2Encoder extends MessageToByteEncoder {
@Override
public void encode(ChannelHandlerContext ctx, Object in, ByteBuf out) throws Exception {
//使用hessian序列化对象
byte[] data = HessianSerializer.serialize(in);
//先写入消息的长度作为消息头
out.writeInt(data.length);
//最后写入消息体字节数组
out.writeBytes<