この場合、各クライアントからの接続要求を受け付けるスレッドは 1つです。クライアントと通信するソケットを、実際にクライアントの 要求に対応するスレッドに Queueを使って渡します。 java.util.concurrentパッケージのクラスを使うと スレッドに対応しているので簡単に記述することができます (たとえばBlockingQueueを使うなどして)。
RunEchoServerThreaded3.javaの実行例(サーバ) |
|
実行例(クライアント0) |
|
実行例(クライアント1) |
|
実行例(クライアント2) |
|
提出〆切は次回の講義の開始時刻です。
提出先 | http://ynitta.com/class/network/local/handin/list.php?id=kadai7a |
---|---|
提出ファイル | EchoHandler3.java |
コメント欄 | 2スレッドに制限してサーバを動作させたとき、 2個のクライアントまでには正しく対応できるが 3個目のクライアントはサーバが空くまで対応が 待たせられたときにサーバ側の実行例。 コピー&ペーストで貼りつけて置くこと。 |
EchoHandler3.javaを打ち込んでRunEchoServerThreaded3を動作させて下さい。 EchoHander3を実行するスレッドは2個しか作らないようにしてサーバを 起動し、3個のクライアントを動作させて、動きを確認して下さい。
提出先 | http://ynitta.com/class/network/local/handin/list.php?id=kadai7b |
---|---|
提出ファイル | なし |
コメント欄 | java.util.concurrentパッケージの中でBlockingQueueインタフェースを implementしているクラス名を6個以上書きなさい。 |
Java API マニュアルを読んで、java.util.concurrentクラスの 中でBlockingQueueインタフェースをimplementしているクラスを 6個以上探して下さい。