0

Netty チャネルを使用する TCP ベースのサーバー/クライアント モデルではChannel.write()、サーバーからの数とChannel.messageReceived()受信クライアントの対応する数の間に何らかの対応がありますか? writes()送信側で10 を実行するmessageReceived()と、リッスンしているクライアントで が 10 回呼び出されるということですか? または Netty は、(write()送信側の から) 送信されたデータを、クライアント側の多かれ少なかれ数のmessageReceived()イベントに集約できますか? Netty でこの動作を構成する方法はありますか?

4

2 に答える 2

1

Channel.write(..) および messageReceived 呼び出しに対して 1:1 のマッピングがあることは保証されていません。サーバー上の ChannelPipeline の次の ChannelHandlers にメッセージをディスパッチするのに十分なデータを受信するまで ChannelBuffer をバッファリングする FrameDecoder サブクラスを使用する必要があります (独自に作成することもできます)。

Netty には、DelimiterBasedFrameDecoder (たとえば) など、すぐに使用できる FrameDecoder 実装がいくつか付属しています。これは、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 に答える