マルチメディア・プログラミング実習 後期 第10回
java.net のクラスの活用
java.netパッケージの InetAddress, URL, Socketなどを利用して、
ネットワークのプログラムを開発する練習をしてみましょう。
準備:
ディレクトリ www の下の java2 に移動しなさい。
基本課題1:
「使用中のマシンの名前を調べて表示する」
-
使用中のマシンの名前を調べて表示するプログラムです。
ソース・プログラム MyHost.java
を作成しなさい。
- javac コマンドでコンパイルしなさい。
- javaコマンドで Javaインタープリタ(仮想マシン)を呼び出し実行しなさい。
基本課題2:
「指定したマシンの IPアドレスを調べて表示する」
-
指定したマシンの IPアドレスを調べて表示するプログラムです。
ソース・プログラム HostAddress.java
を作成しなさい。
- javac コマンドでコンパイルしなさい。
-
まず、最初に引数を省略して自分の使用中のマシンの IPアドレスを調べなさい。
引数に学内、学外のマシン名を指定して、
いずれの場合でも IPアドレスが表示されることを確認しなさい。
java HostAddress
java HostAddress rishiri
java HostAddress java.sun.com
基本課題3:
「指定されたURLのデータの種類を調べる」
-
指定されたURLのデータの種類を調べるプログラムです。
ソース・プログラム URLContentTest.java
を作成しなさい。
- javac コマンドでコンパイルしなさい。
- 引数にテキストや画像の URLを指定して、
いずれの場合でもデータタイプが表示されることを確認しなさい。
java URLContentTest http://www.wakhok.ac.jp/index.html
java URLContentTest http://www.wakhok.ac.jp/hoku.jpg
基本課題4:
「指定されたURLのテキストを表示する」
-
指定されたURLがテキストの場合、その内容を表示するプログラムです。
ソース・プログラム URLContent.java
を作成しなさい。
- javac コマンドでコンパイルしなさい。
- 引数にテキストの URLを指定して、
その内容(HTML文書ならばソース)が表示されることを確認しなさい。
java URLContent http://www.wakhok.ac.jp/home_ja.html
基本課題5:
「ソケットによる通信プログラム」
-
Socket,ServerSocktクラスを使って TCP/IP の
Server-Client形式の通信プログラムを作成します。
ソース・プログラム MessageServer.java
とソース・プログラム MessageClient.java
を作成しなさい。
ただしサーバーが転送するメッセージの内容は、
各自違うものを考えて用意しておいてください。
- javac コマンドでコンパイルしなさい。
- まず、自分のマシン内で確認してみましょう。次のような手順になります。
- 2つのプログラムを同時に動かす必要があるので、
端末エミュレータのウィンドウを2つ以上開き、
どちらもプログラムが置かれているディレクトリに移動しておきなさい。
- 一方のウィンドウで最初にサーバーを起動します。
java MessageServer
- もう一方のウィンドウでクライアントを起動します。
引数に与えるサーバー名は省略してかまいません。
java MessageClient
- クライアントの側にメッセージが転送され、表示されれば成功です。
- サーバーのプログラムは実習時間中、そのまま起動した状態にしておきなさい。
- 続いて、今度は他のマシンのサーバーとの通信を確認しなさい。
次のような手順になります。
- あらかじめ、サーバーが立ち上がっているマシンを確認しておきなさい。
- クライアントに、相手のサーバー名を引数に指定して起動しなさい。
java MessageClient lxg6
- 相手のサーバーからメッセージが転送されてきたら成功です。
応用課題1:
「指定したURLのイメージを表示する」
-
基本課題4:のプログラムを改良し、
イメージの URLが指定されたら、
それを画面に表示するプログラムを作ってみましょう。
ソース・プログラム URLContent2.java
を作成しなさい。
- javac コマンドでコンパイルしなさい。
- 引数にイメージの URLを指定して、
その内容がウィンドウ上に表示されることを確認しなさい。
java URLContent2 http://www.wakhok.ac.jp/annai.gif
*この先の問題は短時間では片づかないと思います。来週以降の実習の時間で、
本格的なアプリケーション開発に取り組んでもらうつもりなので、
その時の課題でもあると考えてください。
応用課題2:
「通信プログラムの改良」
基本課題5:
のプログラムを改良して、キーボードから入力したメッセージを
1)サーバーからクライアントへ送る、2)クライアントからサーバーへ送る、
3)互いにキーボードから入力した内容を相手に送り合い会話をする。
これらの機能を実現するにはどうすればよいか考えてみなさい。
応用課題3:
「通信プログラムの改良(2)」
基本課題5:
のプログラムを改良して、1)クライアント側のメッセージを
ウィンドウ内のTextAreaに表示する、2)サーバー側のメッセージの入力も
TextAreaから行う、3)互いに TextAreaに入力した内容を相手の TextAreaに
表示する。
これらの機能を実現するにはどうすればいいか考えてみなさい。
応用課題4:
「通信プログラムの改良(3)」
基本課題5:
のプログラムを改良して、
1)サーバーが複数のクライアントと通信できる、
2)クライアントは何台かのマシンに対してサーバーが既に走っているかどうか調べ、
なければサーバーを立ちあげる、
などの機能を実現するにはどうすればよいか考えてみなさい。
実習の目次
今週の講義の内容