1

我想通过 Netty 通道流式传输一系列整数。现在,在我的代码channel.write(Integer.valueOf(val)中,我得到了java.lang.IllegalArgumentException: unsupported message type: class java.lang.Integer我理解的错误,因为我没有任何整数编码器/解码器作为管道中的处理程序。这个对吗?我必须编写自己的整数解码器还是有一个可用的?围绕这个主题的一些指导将非常有帮助。

4

2 回答 2

2

是的,情况就是这样......您也可以将其写入 ChannelBuffer,然后将 ChannelBuffer 写入 Channel。

就像是:

ChannelBuffer buf = ChannelBuffers.buffer(4);
buf.writeInt(Integer.valueOf(val));
channel.write(buf);
于 2012-04-12T20:22:37.260 回答
1

是的,你的理解是正确的。如果你的管道中没有合适FrameEncoder的,Netty 会举手说它不知道如何处理Integer.

如果要添加现成的组件,可以将ObjectEncoderObjectDecoder添加到管道中。否则,您将需要实现自己的帧编码器和解码器。

于 2012-04-12T18:00:38.650 回答