他のプログラムとコミュニケートする |
他の Java プログラムと同様に、アプレットは、java.net パッケージに定義された API を使用してネットワークでコミュニケートすることができる。 唯一の違いは、セキュリティ上の理由から、アプレットがコミュニケートできるホス トがアプレットの配信元ホストに限定されていることである。アプレットの配信元ホストを調べるのは簡単である。 次のように、Applet の
getCodeBase()
メソッドと java.net.URL のgetHost()
メソッドを使用するだけでよい。ユーザがアプレットに指定したホスト名とわずかでも異なるホスト名を指定すると、 既存のあらゆるセキュリティマネージャがコミュニケーションを禁止する。これは、 2 つの名前が結局は同じホストを指している場合でも同様である。 (明示的に記述されたホスト名ではなく) 上記のコードを使用すれば、作成したアプ レットが正しいホスト名を確実に使用することになる。String host = getCodeBase().getHost();正しいホスト名を得た後は、カスタムネットワーキングとセキュリティの節に記載されているように、すべてのネットワーキ ングコードを使用することができる。 その節のデータグラムのクライアントとサ ーバーを書くのページには、クライアントとサーバー、2 つのアプ リケーションのコード例が示されている。 そのクライアントのアプレット版はQuoteClientApplet.java である。 これは、アプレットが配信元ホストとコミュニケートできるように変更した上、グラ フィカルな UI をもち、好きなだけ引用句を取り出せるループを使用するように変更 が加えてある。次に示す HTML コードでそのアプレットをページに組み込めば、アプレットを実行す ることができる。
アプレットで引用句を取り出す前に、アプレットの配信元ホストでサーバを実行する 必要がある。 そして、サーバが待機しているポートを書き留めておく。この番号をアプレットに入力すると、アプレットとサーバーがつながれ、ユーザは 1 行の引用句を取り出せる ようになる。 以下に詳細な手順を示す。<applet code=QuoteClientApplet.class width=500 height=100> </applet>
- QuoteServer.java と QuoteServerThread.java をコンパイル する。 テキストファイル (one-liners) は生成されるクラスファイルと同じディレクトリに配置する。
- アプレットのクラスファイルを (HTTP を通して) サービスしているコンピュー タ上で、QuoteServer クラスファイルにインタプリタを起動する。
- 引用句サーバがプリントアウトするポート番号を書き留める。
- この番号をアプレットのテキストフィールドに入力する。
- Send ボタンを押し、サーバーから引用句を要求する。 これでテキストエリアに引用句が現れることになる。
活動中のサーバーは次のようになる。活動中のアプレットは次のようになる。
他のプログラムとコミュニケートする |