【问题标题】:Which encoder and decoder of netty4 should be used?netty4的编码器和解码器应该使用哪个?
【发布时间】:2018-10-18 12:37:37
【问题描述】:

我正在向netty4 socket 发送一个十六进制字符串,其中前 4 个字节代表实际消息的长度。

我想要完成的任务:

  1. First Decoder 应该通过读取传入十六进制字符串的前 4 个字节的长度来对字符串进行解码,并将十六进制字符串转换为字符串。

  2. 然后编码器应该运行并将来自解码器的字符串编码为十六进制字符串,并在开头附加字符串的长度。

我应该使用哪个encoder 和decoder?

【问题讨论】:

    标签: java apache-camel netty


    【解决方案1】:

    对于从字节到十六进制字符串的转换,您可以扩展ByteToMessageDecoder 并实现您的解码功能。要从十六进制字符串转换为字符串,您可以扩展 MessageToMessageDecoder

    对于编码,您也可以扩展 MessageToMessageEncoder 和 MessageToByteEncoder

    【讨论】:

    • 好的,非常感谢你,我使用 MessageToMessageEncoder 进行编码,使用 ByteToMessageDecoder 解码器来编码编码器和解码器的执行顺序是第一个编码器 - > 解码器我希望首先以相反的方式进行我的解码器应该得到执行然后编码器,我为此使用 DefaultChannelHandlerFactory 请建议我如何让我的解码器首先执行
    • 如果将解码器和编码器添加到管道中,则 eecoder 将首先在传入消息上执行,而编码器将在传出消息上执行,因为它们分别是 ChannelInbound 和 Outbound 处理程序。
    • 如果我想让我的解码器先运行然后编码器,那么我应该使用哪个编码器和解码器???
    • 这个答案可能对你有帮助:stackoverflow.com/a/52885638/3599535
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    相关资源
    最近更新 更多