Nettyを使用してクライアント/サーバ通信用のバイナリプロトコルを設計しています。送信されるバイト数は固定量ではなく、任意のサイズにすることができます。Nettyでフラグメンテーションを扱う
クライアントがこのような送信された:ID番号 を表す
最初の4バイトの残りのバイトは私が見た例の文字列
で、メッセージのサイズは固定されているがStringコンテンツは任意のサイズにすることができ、サーバーによって受信されたときに断片化されないようにする必要があります。どうすればNettyでこれを達成できますか?
ありがとうございます。
こんにちはギャレス、答えてくれてありがとう - 非常に感謝しています。私は現在、メッセージの終わりを判断するために何も使用していません。 buffer.readLong()を呼び出してIDを取得すると、次にbuffer.toString(String charsetName)を呼び出します。これは理想的ではありません。ペイロードのサイズを送信することを参照するとき、それを最初に追加し、長さが受信されるまで待つことを提案し、その任意の数を使用してサーバー上のより多くのバイトを待つことを決定しますか? – algolicious
はい。長さが決まったら、LengthFieldBasedFrameDecoderを使用することができます(メッセージが非常に大きい場合は、SimpleChannelUpstreamHandlerに基づいて独自のバッファを作成し、バッファを1回だけ割り当てます)。 – Gareth