2

TCP (SSL が有効) 経由でデータを送信する必要がある 1 つの API で、このパラメーターを Netty に設定しています。

LengthFieldBasedFrameDecoder(1048576, 0, 4, 0, 4))

パラメーター:

  • maxFrameLength - フレームの最大長。フレームの長さがこの値より大きい場合、TooLongFrameException がスローされます。
  • lengthFieldOffset - 長さフィールドのオフセット。
  • lengthFieldLength - 長さフィールドの長さ。
  • lengthAdjustment - 長さフィールドの値に追加する補正値。
  • initialBytesToStrip - デコードされたフレームから取り除く最初のバイト数。

送信する必要があるメッセージ (文字列) があり、次の理由で拒否されています: エラー メッセージ "調整されたフレームの長さが 1048576 を超えています: 2065855613"

問題は、Ruby でメッセージのフレームを設定して、Netty のパラメーターを満たすにはどうすればよいかということです。

4

1 に答える 1

1

問題は、メッセージでフレーム フィールドの長さを指定していないことです。10 進数の 2065855613 は ASCII の {"t} であり、JSON メッセージの先頭の最初の数バイトのように見えます。

解決策は、メッセージの先頭に 4 バイトのメッセージ長を追加することです (長さフィールド自体の長さは含みません)。

于 2015-09-16T19:19:33.320 に答える