- 2.1. ソケット
- 2.2. InetAddressクラス
- 2.3. SocketAddress/InetSocketAddressクラス
- 2.4. Socketクラス
- 2.5. TCPサーバプログラム
- 2.6. TCPクライアントプログラム
- 2.7. プログラムの実行
2.3. SocketAddress/InetSocketAddressクラス
SocketAddressはソケットを識別するアドレスを表すクラスです。ここでのソケットは通信プロトコルに依存しないソケットであり、TCPやUDPなどのTCP/IPプロトコルスイートにおけるソケットアドレスを表すにはInetSocketAddressを用います。InetSocketAddressはSocketAddressのサブクラスです。
TCPやUDPのソケットのアドレスとは、すなわちIPアドレスとポート番号の組み合わせです。InetSocketAddressには次の3つのコンストラクタが用意されています。3番目のコンストラクタでは特定のホストとは関連付けられません。2番目のコンストラクタでも、addrをnullとすることで特定のホストとは関連付けられないInetSocketAddressが生成されます。このようなソケットアドレスは、ローカルホスト(自ホスト)上のソケットアドレスを指定するために用いられます。
- public InetSocketAddress(String hostname, int port)
- public InetSocketAddress(InetAddress addr, int port)
- public InetSocketAddress(int port)
2.4. Socketクラス
Socketクラスはソケットを表すクラスです。Socketはローカルホストの特定のポートに関連付けられます。また、そのSocketを実際に通信に利用するには、接続先のアドレスも指定されていなければいけません。Socketクラスには多くのコンストラクタがありますが、ソケットの接続先アドレスを指定し、すぐに通信に利用できるSocketインスタンスを生成するものは次のものがあります。
- Socket(InetAddress address, int port)
- Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
- Socket(String host, int port, InetAddress localAddr, int localPort)
ローカルのアドレス/ポートを指定していないものは、自動的に割り振られたポートに関連付けられます。コンストラクタでは接続元や接続先のアドレスを指定するのにSocketAddressは利用できませんので注意して下さい。
Socketを利用した通信は、入出力用のストリームを介して実現されます。入出力用のストリームを取得するには次に示すSocketクラスのメソッドを用います。
メソッド
|
説明 |
public OutputStream getOutputStream()
|
送信用のストリームを取得します。 |
public InputStream getInputStream()
|
受信用のストリームを取得します。 |