SDPの設定
SDPの設定にはファイルを使用します。
設定ファイルに記述するのは、次の2種類の項目です。
- bind SDPでバインドするアドレスとポート
- connect SDPでコネクトするアドレスとポート
設定ファイルはテキストで記述し、bindもしくはconnectを記述していきます。行の先頭に#を記述した場合は、その行はコメントと見なされます。
設定ファイルの例を次に示します。
# 192.0.2.1にバインドする場合はSDPを使用する
bind 192.0.2.1 *
# 192.0.2.*の1024以降のポートとコネクトする場合、SDPを使用する
connect 192.0.2.0/24 1024-*
# exampleclusterのHTTPサーバーもしくはDBにコネクトする場合、SDPを使用する
connect examplecluster.foo.com 80
connect examplecluster.foo.com 3306
bind、connectの後にはIPアドレスもしくはホストネームを記述し、その後にポートを指定します。ポートをアスタリスクで指定した場合、すべてのポートを意味します。また、ポートは範囲を指定することも可能で、下限もしくは上限にアスタリスクを使用することも可能です。
サブネット内のマシンとコネクトする場合、ネットマスクの指定のようにビット数で表すことも可能です。
なお、ここではIPv4で設定を行っていますが、IPv6でも記述することが可能です。
設定ファイルはjavaの起動時オプションで指定します。設定ファイルをsdp.confとした場合の設定法を以下に示します。
$ java -Dcom.sun.sdp.conf=sdp.conf -Djava.net.preferIPv4Stack=true [メインクラス]
赤字で示したように-Dcom.sun.sdp.confで設定ファイルを指定します。
もし、IPv4でSDPを使用するのであれば、-Djava.net.preferIPv4Stackをtrueにする必要があります。IPv6で使用する場合は、この指定は必要ありません。
SDPの使用状況をログファイルに出力することも可能です。
$ java -Dcom.sun.sdp.conf=sdp.conf -Dcom.sun.sdp.debug=debug.log -Djava.net.preferIPv4Stack=true [メインクラス]
青字のように-Dcom.sun.sdp.debugでファイルを指定すると、ログをファイルに出力します。
後はSocket/ServerScoketクラス、SocketChannel/ServerSocketChannelクラスで通信を行うだけです。また、Aysnc I/OのAsynchronousSocketChannel/AsynchronousServerSocketChannelクラスでもSDPを使用することが可能です。