ByteBuffer与ChannelBuffer

时间:2012-09-05 06:19:38

标签: java asynchronous netty bytebuffer

我正在使用在netty顶部实现的一些框架。我正在使用以下两个选项从客户端向服务器发送消息。我想这两个片段应该将相同的字节写入套接字,它在服务器端的行为是不同的。它有什么不同?

选项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));

1 个答案:

答案 0 :(得分:6)

在将ByteBuffer写入频道之前,您必须调用

buf.flip();

这使得写入字节可见。