3

私はnettyの上に実装されたいくつかのフレームワークを使用しています。以下の2つのオプションを使用して、クライアントからサーバーにメッセージを送信しています。この2つのスニペットは、サーバー側での動作が異なるソケットに同じバイトを書き込む必要があると思います。どう違うの?

オプション1:大丈夫

ChannelBuffer buf = ChannelBuffers.buffer(1);
buf.writeByte(0x1c);
e.getChannel().write(buf);

オプション2:失敗する

ByteBuffer buf = ByteBuffer.allocate(1);
buf.put(0x1c);
e.getChannel().write(ChannelBuffers.wrappedBuffer(buf));
4

1 に答える 1

6

ByteBuffer をチャネルに書き込む前に、呼び出す必要があります

buf.flip();

これにより、バイトが書き込み可能になります。

于 2012-09-05T06:24:56.880 に答える