[英]Netty - Best way to transmit strings with line breaks?
我正在研究一種使用DelimiterBasedFrameDecoder進行解碼的協議,該協議會在收到換行符時拆分字節緩沖區。
不幸的是,必須有可能用換行符傳輸字符串。 現在,解碼器讀取字符串中的換行符,並相應地創建幀。
我的想法是使用Base64對這些字符串進行編碼,並在framedecoder完成工作后對其進行解碼。 我的問題是,現在有更好的解決方案嗎? Base64帶來了開銷以及其他編碼/解碼工作。
使用另一個定界符是不可能的,因為我需要我的協議的標頭字段。
為此,請在管道中使用基於NUL
定界符的幀解碼器和編碼器。 分隔符文檔在此處 。 例如,在解碼器管道中添加以下內容。
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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.