如何在netty中添加多个基于分隔符的帧解码器...............?

时间:2012-02-22 09:09:48

标签: java netty delimiter

我正在使用 Netty 以这种格式获取字符串数据流...

               string1#st2|st3|st4..|....| 

我得到了这种字符串的多个块,它们由 \ n 分隔,我想首先将这些块分开,然后分离特定的字符串......

我的问题是,如果我使用基于分隔符的帧解码器并使用\ n作为分隔符,我可以将字符串分开而没有问题。但是我怎样才能将字符串的其余部分分开而不用使用字符串标记器....有没有办法添加多个分隔符的帧解码器?因为我想首先处理string1中的信息然后根据字符串的其余部分....如果我写一个解码器来分隔string1那么就没有办法在不使用字符串标记的情况下分离字符串的其余部分......

Thanx ......

修改

有没有办法在通道中持久保存对象..就像在servlet上下文对象中一样.......

2 个答案:

答案 0 :(得分:0)

您应该可以通过向ChannelPipeline添加两个(或更多,如果需要)DelimiterBasedFrameDecoder实例来解决这个问题。只需将首先用'\ n'分隔的那个,然后再添加另一个。这应该工作..

答案 1 :(得分:0)

在netty 5中,您可以直接将自定义属性设置为通道,就像servlet中的上下文一样。

使用Channel属性,您可以在通过解码器管道持久保留分隔的子串(可能是格式化结果)后处理字符串的其余部分。

以下是可以引用的示例:Using channel attributes in different context handlers