0

在使用 Netty Channels 的基于 TCP 的服务器-客户端模型中,Channel.write()来自服务器的数量Channel.messageReceived()与接收客户端上的对应数量之间是否存在任何对应关系?如果我writes()对发件人执行 10,是否意味着messageReceived()将在侦听客户端上调用 10 次?还是 Netty 可以将发送的数据(从write()发送方的 s )聚合成客户端上或多或少的messageReceived()事件?有没有办法在 Netty 中配置这种行为?

4

2 回答 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 回答