我想通过 Netty 通道流式传输一系列整数。现在,在我的代码channel.write(Integer.valueOf(val)
中,我得到了java.lang.IllegalArgumentException: unsupported message type: class java.lang.Integer
我理解的错误,因为我没有任何整数编码器/解码器作为管道中的处理程序。这个对吗?我必须编写自己的整数解码器还是有一个可用的?围绕这个主题的一些指导将非常有帮助。
问问题
930 次
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
.
如果要添加现成的组件,可以将ObjectEncoder和ObjectDecoder添加到管道中。否则,您将需要实现自己的帧编码器和解码器。
于 2012-04-12T18:00:38.650 回答