みんな。
私は Netty の POC に取り組もうとしていますが、現在 FrameDecoder に 3 時間費やしています。うまくいきません :( クライアントは、次の形式のバイナリ メッセージを送信します。
[Header1] [MessageLength] [Header2] [ActualMessage]
(例H0005HWorld
)
メッセージの長さは 10 進形式です。メッセージのヘッダーが の場合H0255H
、メッセージの長さは 255 です。LengthFieldBasedFrameDecoder
長さフィールドが 16 進数であると想定されているため、 を使用できませんでした。私も使用してみましたが、長さフィールドが10進数形式であるためframedecoder
、関数を使用して長さを取得できないため、問題が発生しています。channelBuffer.readInt()
親切にこれを手伝ってください:(
編集:
基本的な FrameDecoder を試してみたところ、次のメッセージが送信されました: 0005Hello
The value of the length in the console is 808464436
.. Length should be 5
and not 808464436
right? 私が何かを誤解している場合は、親切に教えてください。:(
if (channelBuffer.readableBytes() < 4) {
return null;
}
channelBuffer.markReaderIndex();
int length = channelBuffer.readInt();
System.out.println(length);
if (channelBuffer.readableBytes() < length) {
channelBuffer.resetReaderIndex();
return null;
}