さて、私はJavaで単一サーバーのマルチクライアントプログラムを開発しています。私の問題は、すべてのクライアントに単一のストリームを使用できますか、それともクライアントごとに個別のストリームを作成する必要がありますか?
ありがとうございます
通常、クライアントごとにストリームが必要です。場合によっては、UDPとマルチキャストを回避することはできますが、チャットサーバーにとっては素晴らしいアイデアとは思えません。
通常、各クライアントはサーバーに接続し、その接続を介してストリームを簡単に設定できるため、追加の作業なしでクライアントごとにストリームを取得するのは簡単です。
それできますか? はい、Jon Skeetが言ったように、マルチキャストを使用できます。
あなたはそれをすべきですか? これは、ストリームを何に使用しているかによって異なります。
ほとんどのクライアントサーバーアプリケーションでは、独立した通信を維持するためにクライアントごとにストリームが必要になります。もちろん、ライブビデオストリーミングなど、マルチキャストの使用が適切なアプローチであるアプリケーションもあります。このような場合、同じデータを複数のクライアントにストリーミングしているときにネットワークを圧倒したくないでしょう。もちろん、この場合でも、通常、各クライアントとサーバーの間にある種の単一の制御チャネルがあります。
はい、できますが、難しいと思います。
java.net.ServerSocketを使用している場合、各クライアントは次の方法で受け入れます。
Socket client = server.accept();
独自のストリームがあるため、他に何もする必要はありません。
すべてのクライアントに対して単一のストリームが本当に必要なのか、それとも役立つと思われるものなのか。
後者の場合、解決するよりも多くの問題を引き起こす可能性があります。