自旧版本

时间:2015-12-18 15:55:36

标签: apache-mina

我正在开发一个新的TCP套接字服务器,并以几年前为UDP socker服务器编写的旧代码为例。在我之前的工作中,我检查了CRC作为messageReceived()的第一个动作,然后处理消息类型以将其转发给优质服务。由于我可以收到各种大小的消息,非常方便,IoBuffer大小适合收到的消息的确切大小。我总能在消息的末尾找到校验和。

但在我的新项目中, IoBuffer默认情况下总是为2048o 。我试着理解我在旧项目中使用了什么选项,直到我看到Mina 2.0.9中的行为与2.0.4不同。

我做了一些测试并看到了:

  • TCP和版本2.0.4:iobuffer具有固定大小= 2048
  • UDP和版本2.0.4: iobuffer的邮件大小
  • TCP和版本2.0.9:iobuffer具有固定大小= 2048
  • UDP和版本 2.0.9 :iobuffer的固定大小= 2048

使用我的旧应用程序使用Mina 2.0.4记录消息

16:44:31.800 [NioDatagramAcceptor-1] INFO  log1 - RECEIVED: HeapBuffer[pos=0 lim=4 cap=**4**: 61 7A 64 0A]

同样但只是将Mina版本更改为2.0.9

16:47:40.890 [NioDatagramAcceptor-1] INFO  log1 - RECEIVED: HeapBuffer[pos=0 lim=4 cap=**2048**: 61 7A 64 0A]

我无法在发行说明中找到相关信息。有人知道吗?改变它应该是一个很好的理由。我的想法是错误的吗?我非常确定第一个操作应该是在尝试按类型处理消息之前检查CRC,但也许它不是通常的模式。

如果我想更新我的旧应用程序的Mina版本,它也不会再有用了......

希望它清楚......感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以在DatagramConnector.getSessionConfig().setReceiveBufferSize中定义接收缓冲区大小。只需将其设置为您想要的任何内容即可。

相关问题