每个人。
我正在尝试为 Netty 开发 POC,现在我在 FrameDecoder 上花了 3 个小时。不能让它工作:( 客户端将发送一个具有这种格式的二进制消息:
[Header1] [MessageLength] [Header2] [ActualMessage]
(例如H0005HWorld
)
消息长度为十进制格式。如果消息的标题是H0255H
那么消息长度是 255.. 我不能使用,LengthFieldBasedFrameDecoder
因为它期望长度字段是十六进制的。我也尝试过使用framedecoder
,但我遇到了问题,因为我无法使用该函数channelBuffer.readInt()
来获取长度,因为长度字段是十进制格式。
请帮我解决这个问题:(
编辑:
尝试了基本的 FrameDecoder 并发送了以下消息:0005Hello
控制台中长度的值是808464436
..长度应该是5
而不是808464436
对吗?如果我误解了什么,请赐教。:(
if (channelBuffer.readableBytes() < 4) {
return null;
}
channelBuffer.markReaderIndex();
int length = channelBuffer.readInt();
System.out.println(length);
if (channelBuffer.readableBytes() < length) {
channelBuffer.resetReaderIndex();
return null;
}