在使用 Netty Channels 的基于 TCP 的服务器-客户端模型中,Channel.write()
来自服务器的数量Channel.messageReceived()
与接收客户端上的对应数量之间是否存在任何对应关系?如果我writes()
对发件人执行 10,是否意味着messageReceived()
将在侦听客户端上调用 10 次?还是 Netty 可以将发送的数据(从write()
发送方的 s )聚合成客户端上或多或少的messageReceived()
事件?有没有办法在 Netty 中配置这种行为?
问问题
659 次
2 回答
1
它不能保证您的 Channel.write(..) 和 messageReceived 调用具有 1:1 映射。您需要使用一些 FrameDecoder 子类(可能编写您自己的子类)来缓冲 ChannelBuffer,直到您接收到足够的数据来将您的消息发送到服务器上 ChannelPipeline 中的下一个 ChannelHandler。
Netty 已经提供了一些可以使用的 FrameDecoder 实现,例如 DelimiterBasedFrameDecoder (例如),它将注意缓冲数据,直到它接收到 Delimiter,然后将其分派到 ChannelPipeline 中的下一个处理程序。
有关详细信息,请参阅 [1]。
[1] http://netty.io/docs/stable/api/org/jboss/netty/handler/codec/frame/FrameDecoder.html
于 2012-04-13T05:48:47.433 回答
0
是的,有一种方法可以做到这一点,但你必须给我们更多才能做其他事情。
于 2012-04-12T22:25:15.720 回答