【发布时间】:2012-01-10 22:51:39
【问题描述】:
如果您像这样创建管道:
pipeline.addLast("decoder", new StringDecoder());
pipeline.addLast("encoder", new StringEncoder());
有什么方法可以从通常处理文本的管道中获取原始数据? 我真的很想这样做:
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
// Save data received from the server.
Object msg = e.getMessage();
byte[] rawdata = new byte[((ChannelBuffer)msg).readableBytes()];
((ChannelBuffer)msg).getBytes(0, rawdata);
tmpTarFile.write(rawdata);
}
频道主要是文本,但有时我需要从中读取原始二进制文件。 在这种情况下,由于管道中的 StringDecoder,传入的 msg 是一个 String 对象。我想获取该字符串下的通道缓冲区数据...
在服务器端,数据是这样写的:
ChannelBuffer databuffer = ChannelBuffers.buffer(blobstream.size());
databuffer.writeBytes(blobstream.toByteArray());
e.getChannel().write(databuffer);
看起来我必须关闭字符串编码器/解码器(将其转换为具有原始字节访问权限的 ChannelBuffer)并将字节转换为字符串或从字符串转换...
【问题讨论】:
标签: netty