2016-05-05 35 views
0

私は1つのサーバーとスレッドを介して複数のクライアントです。クライアントは、メッセージをサーバーに送信します。私はエコーシステムのようにサーバがクライアントにメッセージを送り返す方法を考案しました。私は2つのクライアントを持っている場合、私は彼らが彼らのメッセージをサーバーに送信し、サーバーは、メッセージを送信しなかったクライアント、すなわち他のクライアントにそれを送信する必要があります。メッセージを送信したクライアント以外のすべてのクライアントにメッセージを送り返すにはどうすればいいですか?Javaソケット、サーバーは複数のクライアントにメッセージを送信します

答えて

0

メッセージが到着したら、着信メッセージが関連付けられているユーザーID /その他の識別IDを判別します。メッセージを送信したIDに関連付けられたSocketを除外します。

0

新しいメッセージが受信されるたびにサーバ側ですべてのクライアントのリストを作成します。 リストを作成し、ソケットのポートをIDとして使用してmsgを送信してください。

0

私は最近チャットプログラムも書いています。私がしたのは、個々のクライアントごとに接続を処理するクラスClientHandlerがありました。

内側ClientHandler私はHashMapでした。 に接続していたクライアントをKeyと追加しました。client idです。 client idにはintではなくUUIDを使用しました。

このハンドラクラスの中には、sendMessage(String str)メソッドがありました。この方法では、各ClientHandlerオブジェクトをループするfor-eachループがあり、HashMap内のvaluesをチェックします。このfor-eachループ内にはthisというIDを持つClientHandlerオブジェクトに書き込みを行っているかどうかを確認する文がifです。検査でfalseが返された場合は、PrintWriterにメッセージを書き込んで、はメッセージを書き込むクライアントにを送信しません。

私はになりました。 のために働かないかもしれません。

関連する問題