I-13-7. Javaによるネットワークプログラミング

Javaによるネットワークプログラミングの概要、特徴を説明する。ネットワークプログラミングの基礎であるソケットを用いたセッション管理について、Javaを例題として説明する。またJavaのRMI (Remote Method Invocation)を活用した分散プログラミングも解説する。

【学習の要点】

* ネットワークプログラミングとは、複数のサーバーやクライアント間で情報をやり取りする働きを持つアプリケーションを作ることである。

* Javaによるネットワークプログラミングの特徴は、豊富なライブラリにより比較的短いコードでネットワークアプリケーションを作ることができる。

* ソケットを用いたセッション管理とは、クライアントとサーバーの間の接続を開始から終了まで確立するものである。

図I-13-7. ソケットによる通信

【解説】

1) ソケットを用いたセッション管理

ソケットは、ホスト名またはIPアドレスと、TCPポート番号とを利用して、リモートホストに接続するための仕組みである。

接続が確立されてから切断されるまでの間を、セッションという。TCP/IPの通信においては、サーバとクライアント間の通信が、他のクライアントとの通信と混じらないように、セッション管理の機構が必須である。

2) Javaによるネットワークプログラミング

URL、IPアドレスなどのネットワークの基礎知識は、Javaを用いてネットワークプログラムを書くときに必要になる知識である。これらを扱うクラスライブラリが、java.netパッケージである。ソケット関連のクラスは以下のようなものがある。

* ServerSocket

サーバーソケットのクラス。ポート番号を指定して生成すると、そのポートに対してサーバーソケットが作られる。

* Socket

ソケット接続のクラス。サーバではServerSocketクラスのaccept()メソッドにより待ち受けとして生成される。クライアントではホストとポート番号とを指定して生成する。

* InputStream

入力ストリームのクラス。SocketクラスのgetInputStream()メソッドにより生成される。

* InputStreamReader

入力ストリームからの読み取りのクラス。InputStreamクラスのオブジェクトを指定して生成する。

* BufferedReader

読み取りバッファのクラス。InputStreamReaderクラスのオブジェクトを指定して生成する。

* OutputStream

出力ストリームのクラス。SocketクラスのgetOutputStream()メソッドにより生成される。

* OutputStreamWriter

出力ストリームへの書き込みのクラス。OutputStreamクラスのオブジェクトを指定して生成する。

* BufferedWriter

書き込みバッファのクラス。OutputStreamWriterクラスのオブジェクトを指定して生成する。

3) RMIによるネットワークプログラミング

Javaを使ってネットワークプログラミングをするには、RMI(Remote Method Invocation)を用いる方法もある。RMIを使うことによって、トランスポート層を意識しなくてもネットワークプログラミングができるようになった。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。