update 电单车协议

This commit is contained in:
Guoqs
2024-08-03 16:02:50 +08:00
parent 397353c7e5
commit b535eba509
5 changed files with 53 additions and 45 deletions

View File

@@ -45,7 +45,7 @@ public class StartAndLengthFieldFrameDecoder extends ByteToMessageDecoder {
byte[] headerBytes = new byte[HEADER_LENGTH_DNY];
buffer.getBytes(beginReader, headerBytes, 0, HEADER_LENGTH_DNY);
String header = new String(headerBytes, StandardCharsets.UTF_8);
// log.info("检查包头是否是DNY, header:{}", header);
if ("DNY".equals(header)) {
// 处理 DNY 协议
decodeDnyMessage(buffer, out, beginReader);
@@ -117,6 +117,7 @@ public class StartAndLengthFieldFrameDecoder extends ByteToMessageDecoder {
// 获取消息长度
int length = buffer.getUnsignedByte(beginReader + HEADER_LENGTH_DNY);
// log.info("获取消息长度, length:{}", length);
// 检查剩余数据是否足够
if (buffer.readableBytes() < HEADER_LENGTH_DNY + 1 + length) {
buffer.readerIndex(beginReader);
@@ -124,8 +125,8 @@ public class StartAndLengthFieldFrameDecoder extends ByteToMessageDecoder {
}
// 读取 data 数据
ByteBuf frame = buffer.retainedSlice(beginReader, HEADER_LENGTH_DNY + 1 + length);
buffer.readerIndex(beginReader + HEADER_LENGTH_DNY + 1 + length);
ByteBuf frame = buffer.retainedSlice(beginReader, HEADER_LENGTH_DNY + length + 2);
buffer.readerIndex(beginReader + HEADER_LENGTH_DNY + length + 2);
out.add(frame);
}

View File

@@ -8,7 +8,7 @@ import io.netty.handler.codec.ByteToMessageDecoder;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
@Deprecated
@Slf4j
public class StartAndLengthFieldFrameDecoder2 extends ByteToMessageDecoder {
private static final int HEADER_LENGTH_DNY = 3; // "DNY" 包头的长度