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に送信
© Copyright 2024 ExpyDoc