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 数组性能测试