Document

Net - ネットワーク
花島昭菜
佐上泰彦
4. URLクラス
URL クラスは、World Wide Web(WWW)上
の「リソース」を指すポインタである URL
(Uniform Resource Locator) を表す。
HTTPによる通信は応用範囲が広いにも関
わらず,行末の処理など煩わしい前処理が必
要である.これを自動的に行うための便利な
クラス URLが用意されている。
5. Threadの基本
プログラムには「まずこの処理を実行する」、
「次にこの処理を実行する」といった一連の流
れがある。この処理の流れのことを「スレッド
(thread)」と言う。
 Threadを複数作り優先順位をつける事に
よって,メソッドなどを並列に実行する事が可
能になる。
Threadの作り方(count2.javaの場合)
1.Runnableインターフェースを実装する。
2.StartThread()メソッドを用意し,その中で
Threadオブジェクトを 作り,start()メソッドを
実行する。(これがメイン(親)メソッドとなる)
子スレッドの定義は,run()メソッド内で行う。
最後にmainから,StartThread()を呼びだす。
※スレッドに処理させる内容はRun()メソッド
スレッドを起動させる時はStart()メソッドを呼び出す
implementsとextendsの差
 implements(実装)する場合には様々なクラスを利
用する際に、Threadをわざわざ呼び出さなくてはな
らないが、extends(継承)する場合にはその必要が
なくなる。
その為extendsの方が便利であり、普段はこちらを
利用した方がよい。
 implementsを利用する時はAppletなど利用する為
にextendsを既に利用している場合、2つ同時に継
承する事ができないため、implementsを用いてス
レッドを作る事になる。
◎演習 Count2.javaを改良して,A, B, Cの
三種類のメソッドが並列に 走るCount3.java
を書け.
6. Threadのネットワークへの利用
 Threadは本格的なネットワークプログラミングに欠
かせない. これまでに説明した
 Clinet2.java, Server2.java は クライアントとサーバ
が 必ず順番に データを送受 しなくてはならなかっ
た.例えば,クライアントが2回続けて データを送る
と,サーバも同様に送ろうとしていて,互いに 送信
が完了しないで処理が止まってしまう.この現象を
「デッドロック」という.
デッドロックの回避策
送信用と受信用に2本のスレッドを用いる
データの送信方向(順番)を同一にする
※Javaではデッドロックの発生を検出したり解
消したりする仕組みは提供されていないので、
設計/開発する側が注意しておく事が大事
◎演習 Server3.javaと同様にスレッドを用い
て, 送信と受信をを示すClient3.javaを書け.
※Client3-0.javaを元にスレッドを利用して並
列稼動させる
宿題
 宿題1
6.1 プログラム Challenge.java を元にして, クライアントの送る入力値が大きい
か小さいか送り返すサーバ ChallengeServer.java を作れ
 宿題2
クライアントからサーバへ接続し、サーバからクライアントが指定したファイルを受
信し、指定したファイル名で保存する Server4.java と Client4.java を書け
実行例
---- Client4 ---$ java Client4 localhost 65535 alice.bmp alice2.bmp
ファイル alice.bmp を受信し、 alice2.bmp として保存しました。
---- Server4 ---$ java Server4 65535
accept: Socket[addr=/127.0.0.1,port=59093,localport=65535]
request: alice.bmp
 宿題3 時間間に合わなかったので今日の夜MLに送信