粘包和分包出现的原因是:没有一个稳定数据结构
解决办法: 分割符
长度 + 数据
*
* 数据包格式
* +——----——+——-----——+——----——+——----——+——-----——+
* | 包头| 模块号 | 命令号 | 长度 | 数据 |
* +——----——+——-----——+——----——+——----——+——-----——+
*
* 包头4字节
* 模块号2字节short
* 命令号2字节short
* 长度4字节(描述数据部分字节长度)
创建encoder 和 decoder 分别 加入pipeline 中
public class RpcDecoder extendsByteToMessageDecoder {private Class>genericClass;public RpcDecoder(Class>genericClass) {this.genericClass =genericClass;
}
@Overridepublic void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throwsException {if (in.readableBytes() < 4) {return;
}
in.markReaderIndex();int dataLength =in.readInt();if (dataLength < 0) {
ctx.close();
}if (in.readableByte