ByteBuffer 与 ChannelBuffer

Posted

技术标签:

【中文标题】ByteBuffer 与 ChannelBuffer【英文标题】:ByteBuffer vs ChannelBuffer 【发布时间】:2012-09-05 06:19:37 【问题描述】:

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

选项 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】:

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

buf.flip();

这使得字节对写入可见。

【讨论】:

是的,现在它产生了相同的结果。我在哪里可以阅读更多关于这个问题的性质的信息。谢谢! @NikolayKuznetsov 一个简单的解释你可以在docs找到

以上是关于ByteBuffer 与 ChannelBuffer的主要内容,如果未能解决你的问题,请参考以下文章

Java:将 String 与 ByteBuffer 相互转换以及相关问题

直接 java.nio.ByteBuffer 与 Java 数组性能测试

ByteBuffer 与 BufferInputStream

ByteBuffer 与 ChannelBuffer

使用 Bytebuffer 写出与简单写出的返回不同

Java ByteBuffer 放置与包装