演習3-1-1 MyServer.java
をテンプレートにして作成
開始行:
[[TopPage]] > [[演習課題]] > 演習3-1-1
* MyServer.java [#m1348627]
MyServer.javaには,2つのclassがあります.
一つは,class ''ClientProcThread''で,もう一つはclass ''M...
** (1)class ClientProcThread [#ncc7425d]
&color(black,#cccccc){''ソースコード''}; 9〜48行目
このクラスは,各クライアントに対する%%%ソケットを保持%%%...
プログラムは一つですが,接続してきたクライアント毎にこの...
内部のインスタンス変数として,number, incoming, ... , myN...
- number ... クライアントの番号&br;
接続されたクライアント毎に重複しない番号を割り当てて管理...
- myName ... クライアントの名前.
インスタンスは,MyServerからClientProcThreadが呼び出され...
また,このクラスのインスタンスが生成されると''run()''メソ...
**(2)class MyServer [#o10f3516]
&color(black,#cccccc){''ソースコード''}; 50〜112行目
- ''main()'' メソッド(79〜111行目)~
起動時に呼び出される処理です.
-- 81〜86行目: 最初に,必要な通信用の配列を確保します.
-- 93行目: サーバとして,ポートを開きます.そして,94行目...
-- 95行目: プログラムは,クライアントの接続があるまで,95...
クライアントからの接続があると,受け入れの処理(''accept'...
-- 99〜101行目:通信に必要な処理(inputとoutputのインスタ...
-- 103〜104行目:上で説明したクライアント用のスレッド''Cl...
- ''SendAll()''メソッド (62〜71行目)~
ClientProcThreadから呼び出されます.%%%接続している全ての...
ClientProcThreadは,一つのクライアント情報しか持っていな...
- ''SetFlag()''メソッド (74〜76行目)~
ClientProcThreadから呼び出されます.もし,ClientProcThrea...
flagがfalseだと,SendAllではそのソケットにデータを送りま...
- スレッドについて~
&color(black,#cccccc){''ソースコード''}; 9〜48行目
ソースコードのclass ClientProcThread extends Thread {&br;
というのがあります.
これは,Thread(スレッド)という特殊なプログラムのことで...
つまり,メインのプログラムが動いている最中に,並列に動き...
今回は,myClientProcThread = new ClientProcThread[maxConn...
というプログラムで,接続クライアント毎に,スレッドが作ら...
各スレッドは並列に実行し続けます.~
スレッドは,実行後に「run」が自動的に実行されます.~
runの中身は,while (true) で無限ループをしています.~
今回は,無限ループにしていますが,本来は何かの条件で,終...
"BYE"のメッセージをおくると,終了するようにしています.~
#ref(thread.001.png,nolink,center)~
CENTER:図1. メインウィンドウ
- try-catchについて~
ソースコードの中で,try-catch文がいくつか使われています.~
try-catch文は,「例外」(Exception)が発生する可能性があ...
例外というのは,なにかエラーのことですが,あまり想定され...
例えば,なにかのエラーでファイルに書き込めない,0で割り...
使い方としては,エラーが発生しそうなところを,tryブロック...
catchは,エラーがおこったときにそのエラーをつかまえる(ca...
エラーが起こったときの対応をcatchブロックには書きます.~
catchの中の引数は catch (IOException e)などは,エラーの種...
その値をみて,エラー処理の動きを変えます.~
#ref(try-catch.001.png,nolink,center)~
- なぜtry-catchが存在するか?
** 課題 [#wa29fa0d]
+ MyServer.javaファイルをコピーして,''MyServer2.java''を...
+ 現在の''MyServer''プログラムでは,クライアントとサーバ...
Hello, client No.1 ! Enter 'Bye' to exit.
と表示されていますが,これを,MyServer2では
1
が出力されるように変更してください.(クライアントの番号だ...
''ヒント'':&br;&br;
%%%クラス名変更%%%は,プログラム中にある&color(red){''す...
&size(16){[[&ref(http://yoslab.net/netprog/next.gif,nolin...
終了行:
[[TopPage]] > [[演習課題]] > 演習3-1-1
* MyServer.java [#m1348627]
MyServer.javaには,2つのclassがあります.
一つは,class ''ClientProcThread''で,もう一つはclass ''M...
** (1)class ClientProcThread [#ncc7425d]
&color(black,#cccccc){''ソースコード''}; 9〜48行目
このクラスは,各クライアントに対する%%%ソケットを保持%%%...
プログラムは一つですが,接続してきたクライアント毎にこの...
内部のインスタンス変数として,number, incoming, ... , myN...
- number ... クライアントの番号&br;
接続されたクライアント毎に重複しない番号を割り当てて管理...
- myName ... クライアントの名前.
インスタンスは,MyServerからClientProcThreadが呼び出され...
また,このクラスのインスタンスが生成されると''run()''メソ...
**(2)class MyServer [#o10f3516]
&color(black,#cccccc){''ソースコード''}; 50〜112行目
- ''main()'' メソッド(79〜111行目)~
起動時に呼び出される処理です.
-- 81〜86行目: 最初に,必要な通信用の配列を確保します.
-- 93行目: サーバとして,ポートを開きます.そして,94行目...
-- 95行目: プログラムは,クライアントの接続があるまで,95...
クライアントからの接続があると,受け入れの処理(''accept'...
-- 99〜101行目:通信に必要な処理(inputとoutputのインスタ...
-- 103〜104行目:上で説明したクライアント用のスレッド''Cl...
- ''SendAll()''メソッド (62〜71行目)~
ClientProcThreadから呼び出されます.%%%接続している全ての...
ClientProcThreadは,一つのクライアント情報しか持っていな...
- ''SetFlag()''メソッド (74〜76行目)~
ClientProcThreadから呼び出されます.もし,ClientProcThrea...
flagがfalseだと,SendAllではそのソケットにデータを送りま...
- スレッドについて~
&color(black,#cccccc){''ソースコード''}; 9〜48行目
ソースコードのclass ClientProcThread extends Thread {&br;
というのがあります.
これは,Thread(スレッド)という特殊なプログラムのことで...
つまり,メインのプログラムが動いている最中に,並列に動き...
今回は,myClientProcThread = new ClientProcThread[maxConn...
というプログラムで,接続クライアント毎に,スレッドが作ら...
各スレッドは並列に実行し続けます.~
スレッドは,実行後に「run」が自動的に実行されます.~
runの中身は,while (true) で無限ループをしています.~
今回は,無限ループにしていますが,本来は何かの条件で,終...
"BYE"のメッセージをおくると,終了するようにしています.~
#ref(thread.001.png,nolink,center)~
CENTER:図1. メインウィンドウ
- try-catchについて~
ソースコードの中で,try-catch文がいくつか使われています.~
try-catch文は,「例外」(Exception)が発生する可能性があ...
例外というのは,なにかエラーのことですが,あまり想定され...
例えば,なにかのエラーでファイルに書き込めない,0で割り...
使い方としては,エラーが発生しそうなところを,tryブロック...
catchは,エラーがおこったときにそのエラーをつかまえる(ca...
エラーが起こったときの対応をcatchブロックには書きます.~
catchの中の引数は catch (IOException e)などは,エラーの種...
その値をみて,エラー処理の動きを変えます.~
#ref(try-catch.001.png,nolink,center)~
- なぜtry-catchが存在するか?
** 課題 [#wa29fa0d]
+ MyServer.javaファイルをコピーして,''MyServer2.java''を...
+ 現在の''MyServer''プログラムでは,クライアントとサーバ...
Hello, client No.1 ! Enter 'Bye' to exit.
と表示されていますが,これを,MyServer2では
1
が出力されるように変更してください.(クライアントの番号だ...
''ヒント'':&br;&br;
%%%クラス名変更%%%は,プログラム中にある&color(red){''す...
&size(16){[[&ref(http://yoslab.net/netprog/next.gif,nolin...
ページ名: