java - ruby 在 Netty 中为 LengthFieldBasedFrameDecoder 参数构建一个文件

标签 java ruby tcp netty raw-data

我在一个 API 中为 Netty 设置了这个参数,我需要通过 TCP(启用 SSL)向其发送数据。

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

参数:

  • maxFrameLength - 帧的最大长度。如果帧的长度大于该值,将抛出 TooLongFrameException。
  • lengthFieldOffset - 长度字段的偏移量。
  • lengthFieldLength - 长度字段的长度。
  • lengthAdjustment - 添加到长度字段值的补偿值。
  • initialBytesToStrip - 要从解码帧中剥离的第一个字节数。

我有消息(字符串)需要发送,但由于以下原因被拒绝: 错误消息“调整后的帧长度超过 1048576:2065855613”

那么问题来了,ruby中的message怎么设置frame才能满足Netty的参数呢?

最佳答案

您的问题是您没有在消息中指定帧字段长度。 十进制数 2065855613 在 ASCII 中是 {"t},看起来像 JSON 消息开头的前几个字节。

解决方案是确保将 4 字节的消息长度附加到消息的开头(不包括长度字段本身的长度)。

关于java - ruby 在 Netty 中为 LengthFieldBasedFrameDecoder 参数构建一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32596807/

相关文章:

ruby - 难以访问 Sinatra 中的验证错误

ruby-on-rails - 实例变量假设 : UsersController assumes too much for instance variable '@user'

r - 如何在 Windows 上托管 Shiny 的应用程序?创建TcpServer : address not available

tomcat - Servlet 何时读取或写入实际数据

java - 在 Windows 上的 Spark-Submit 中将多个 -D 参数传递给 driver-java-options

java大括号用法

java - 某些文件格式通过 FTP 损坏

java - 在闪屏中显示图像

ruby - 按哈希数组分组

c++ - C++ : Can multiple Clients listen to one server when endpoint is hard coded? 中的远程过程调用 (RPC)