シンプルなネットサーバーを想定してください。Netty:2つのチャネルを接続する
最初のクライアントが接続すると、そのチャネルが覚えています。 2番目のクライアントが接続している場合は、最初のチャネルに書き込むようにします。つまり、最初のチャネルに書き込まれたすべてが2番目のチャネルに書き込まれ、逆も同様です。
このシンプルなアプリケーションは、telnetからtelnetへのチャットのようなものです。
シンプルなネットサーバーを想定してください。Netty:2つのチャネルを接続する
最初のクライアントが接続すると、そのチャネルが覚えています。 2番目のクライアントが接続している場合は、最初のチャネルに書き込むようにします。つまり、最初のチャネルに書き込まれたすべてが2番目のチャネルに書き込まれ、逆も同様です。
このシンプルなアプリケーションは、telnetからtelnetへのチャットのようなものです。
両方のチャネルをDefaultChannelGroupに追加し、その参照を格納します。次に、チャンネルに書き込む場合は、ChannelGroupのwrite(...)メソッドを呼び出します。
私が知っているように、2つのソケットチャネルを接続するためのストレートフォワード方法はありません。 (ただし、非ソケットチャンネル、LocalChannelを使用する2つのローカルチャンネル、IOStreamChannelを使用する任意の入力出力ストリームを接続する方法があります)。
この問題は、channelConnected()、channelDisconnected()、およびmessageReceived()のハッシュテーブルにチャンネルを追加/削除する、パイプラインにブリッジチャンネルハンドラ(extends SimpleChannelHandler)適切なピアチャネルを作成し、それにメッセージを書き込みます。
ChannelGroupに書き込まれたメッセージは、グループ内のすべてのクライアント、つまり発信者に送信されませんか。 – Dennis
はい、両方の側にメッセージを送信します。 –