我正在编写一个应用程序服务器,它将接收来自网络的SIP和DNS消息。
当我收到来自网络的消息时,我从文档中了解到,起初,我收到一个ChannelBuffer
. 我想确定已收到哪种消息(SIP 或 DNS)并对其进行解码。
要确定消息类型,我可以将端口专用于每种类型的消息,但我很想知道是否存在另一种解决方案。我的问题更多是关于如何解码ChannelBuffer
.
Netty是否ChannelHandler
提供解码 SIP 或 DNS 消息?如果不是,那么在类型层次结构中编写我的自定义的正确位置是什么ChannelHandler
什么?
为了说明我的问题,让我们以 为例HttpRequestDecoder
,层次结构是:
java.lang.Object
org.jboss.netty.channel.SimpleChannelUpstreamHandler
org.jboss.netty.handler.codec.frame.FrameDecoder
org.jboss.netty.handler.codec.replay.ReplayingDecoder<HttpMessageDecoder.State>
org.jboss.netty.handler.codec.http.HttpMessageDecoder
org.jboss.netty.handler.codec.http.HttpRequestDecoder
另外,我是否需要使用两个不同ChannelHandler
的解码和编码,或者是否有可能使用单个ChannelHandler
?
谢谢