簡體   English   中英

Netty-帶有換行符的字符串傳輸的最佳方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM