2012-04-12 1 views
1

Nettyチャネルを介して一連の整数をストリーミングする必要があります。今、私のコードchannel.write(Integer.valueOf(val)で、私は理解しているエラーjava.lang.IllegalArgumentException: unsupported message type: class java.lang.Integerを得ています。パイプラインのハンドラとしてエンコーダ/デコーダを持っていないからです。これは正しいです?私自身の整数デコーダを書く必要がありますか、それとも使用できるデコーダがありますか?このトピックに関するいくつかのガイダンスは非常に役立ちます。整数用エンコーダデコーダ

答えて

1

よろしくお願いいたします。あなたのパイプラインに適切なFrameEncoderがなければ、Nettyはその手を投げ捨てて、Integerの対処方法を知らないと言います。

市販のコンポーネントを追加する場合は、ObjectEncoderObjectDecoderをパイプラインに追加できます。それ以外の場合は、独自のフレームエンコーダとデコーダを実装する必要があります。

2

はい、そうです。ChannelBufferに書き込んだ後、ChannelBufferをチャンネルに書き込むこともできます。

のような何か:

ChannelBuffer buf = ChannelBuffers.buffer(4); 
buf.writeInt(Integer.valueOf(val)); 
channel.write(buf);