Netty中的消息传递,都必须以字节的形式,以ChannelBuffer为载体传递。
public String convertByteBufToString(ByteBuf buf) {
String str;
if(buf.hasArray()) { // 处理堆缓冲区
str = new String(buf.array(), buf.arrayOffset() + buf.readerIndex(), buf.readableBytes());
} else { // 处理直接缓冲区以及复合缓冲区
byte[] bytes = new byte[buf.readableBytes()];
buf.getBytes(buf.readerIndex(), bytes);
str = new String(bytes, 0, buf.readableBytes());
}
return str;
}
public ByteBuf convertStringToByteBuf(String message) {
ByteBuf byteBuf = null;
if(StringUtils.isNotBlank(message)){
byte[] bytes = message.getBytes();
//池化
PooledByteBufAllocator allocator = new PooledByteBufAllocator(true);
byteBuf = allocator.directBuffer(bytes.length);
byteBuf.writeBytes(bytes);
}
return byteBuf;
}
内容来源于网络,如有侵权,请联系作者删除!