スレッドを用いた1対多ソケット通信でクライアントを識別したい
Posted: 2015年6月01日(月) 14:10
こんにちは。以前Javaに関して質問させて頂いた者です。
現在、通信を行うプログラムを作ってみようと勉強しております。
環境
言語:Java / IDE:Eclipse / OS:Windows7
今回も同様にJavaで開発していて困っている事なのですが、TCP/IPソケット通信で、例えば次のようにしてサーバーが受け付けた接続をスレッドに振るとします。(抜粋です。すいませんが、分かりづらければご指摘下さい)
こうすると、接続が確立するたびにスレッドが生成されていくと思うのですが、次の事で躓いてしまいました。
こういった複数のクライアントから接続されている時、各クライアント情報とスレッドをサーバー内部で紐付けて識別したいと思っています。例えば、サーバー側から、接続されている中であるクライアントAにのみメッセージを送信したい時、サーバー内部で複数スレッドが存在する中、どのスレッドがAと接続しているスレッドかを区別してメッセージ送信命令を出したいのです。
ウェブ上のサンプルコード等で勉強させて頂いているのですが、実装の糸口すら掴めず困っています。
ご存知の方がいらっしゃいましたら教えて欲しいです。
よろしくお願いします。
現在、通信を行うプログラムを作ってみようと勉強しております。
環境
言語:Java / IDE:Eclipse / OS:Windows7
今回も同様にJavaで開発していて困っている事なのですが、TCP/IPソケット通信で、例えば次のようにしてサーバーが受け付けた接続をスレッドに振るとします。(抜粋です。すいませんが、分かりづらければご指摘下さい)
while(true) {
// 接続受付
Socket clientSocket = serverSocket.accept();
// ソケットをスレッドに登録してスタート
new Thread(ServerClass(clientSocket)).start();
}
こういった複数のクライアントから接続されている時、各クライアント情報とスレッドをサーバー内部で紐付けて識別したいと思っています。例えば、サーバー側から、接続されている中であるクライアントAにのみメッセージを送信したい時、サーバー内部で複数スレッドが存在する中、どのスレッドがAと接続しているスレッドかを区別してメッセージ送信命令を出したいのです。
ウェブ上のサンプルコード等で勉強させて頂いているのですが、実装の糸口すら掴めず困っています。
ご存知の方がいらっしゃいましたら教えて欲しいです。
よろしくお願いします。