开发部标JT808GPS平台,使用java语言开发网关程序,目前普遍使用Netty。众所周知,TPC编程要解决粘包和拆包问题。现提供一种解决方案如下:
public class ProtocolDecoder extends ByteToMessageDecoder {
private Logger logger = Logger.getLogger(ProtocolDecoder.class);
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
if (in == null) {
return;
}
in.markReaderIndex();
ByteBuf byteBuf = in.asReadOnly();
byteBuf.markReaderIndex();
while (in.isReadable()) {
in.markReaderIndex();
int packetBeginIndex = in.readerIndex();
byte tag = in.readByte();
// 搜索包的开始位置
// 处理黏包和拆包
if(tag==0x7E){
if(!in.isReadable()){