3

我正在使用一些在 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));
4

1 回答 1

6

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

buf.flip();

这使字节对写入可见。

于 2012-09-05T06:24:56.880 回答