TopPage > 演習課題 > 演習3-1-1

MyServer.java

MyServer.javaには,2つのclassがあります. 一つは,class ClientProcThreadで,もう一つはclass MyServerです.

(1)class ClientProcThread

ソースコード 9〜48行目

このクラスは,各クライアントに対するソケットを保持し,クライアントからデータが送られてくるのを聞いて(Listen)います.

プログラムは一つですが,接続してきたクライアント毎にこのクラスがスレッド*1として生成されます(重要).

内部のインスタンス変数として,number, incoming, ... , myNameなどがクライアント毎に保持されています.

インスタンスは,MyServerからClientProcThreadが呼び出されて,設定されます. また,このクラスのインスタンスが生成されるとrun()メソッドが常時動いて,通信データをチェックして,データが届いたら,全員に配る処理をします.

(2)class MyServer

ソースコード 50〜112行目

課題

  1. MyServer.javaファイルをコピーして,MyServer2.javaを作成し,クラス名もMyServer2にしてください.

  2. 現在のMyServerプログラムでは,クライアントとサーバの接続が確立したときに
    Hello, client No.1 ! Enter 'Bye' to exit.
    と表示されていますが,これを,MyServer2では
    1
    が出力されるように変更してください.(クライアントの番号だけ出力するようにします.)

ヒント

クラス名変更は,プログラム中にあるすべてのMyServerという文字列を,MyServer2にする必要があります.

next.gif 次の演習(3-2)


*1 メインのプログラム(メソッド)とは非同期に動作するメソッド群.
通常,メインプログラムからメソッドAを呼び出すと,同期的=メソッドAが終わるまでメインプログラムは停止状態=に実行されますが,メソッドAをスレッド化して呼び出すと,メインプログラムとメソッドAは同時に実行されるようになります.


トップ   一覧 単語検索 最終更新     最終更新のRSS