gpt4 book ai didi

java - Netty - 传输带有换行符的字符串的最佳方式?

转载 作者:行者123 更新时间:2023-11-30 08:13:16 25 4
gpt4 key购买 nike

我正在开发一种协议(protocol),该协议(protocol)使用 DelimiterBasedFrameDecoder 进行解码,每当收到换行符时就会拆分 bytebuf。

不幸的是,必须有可能传输带有换行符的字符串。到目前为止,字符串中的换行符已被解码器读取并相应地创建了帧。

我的想法是使用 Base64 对这些字符串进行编码,并在帧解码器完成其工作后对其进行解码。我现在的问题是,这个问题有更好的解决方案吗? Base64 带来开销以及额外的编码/解码工作。

无法使用另一个定界符,因为我的协议(protocol)的 header 字段需要它。

最佳答案

在您的管道中为此使用基于 NUL 定界符的帧解码器和编码器。分隔 rune 档是 here .例如,在解码器管道中添加以下内容。

pipeline.addLast("framer", new DelimiterBasedFrameDecoder(8192, Delimiters.nulDelimiter()));

编码时应使用相同的示例

@Sharable
public class NulEncoder extends OneToOneEncoder {

@Override
protected Object encode(ChannelHandlerContext ctx, Channel channel,
Object msg) throws Exception {
ChannelBuffer buffer = ChannelBuffers.wrappedBuffer((ChannelBuffer)msg, Delimiters.nulDelimiter());
return buffer;
}
}

关于java - Netty - 传输带有换行符的字符串的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30065365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com