目次へ

2. ソケット

この節ではソケットを利用した通信プログラムを学びます。まずソケットとは何であるかを説明し、そのあとプログラムを通してクライアントアプリケーションでのソケットの利用方法を説明します。

2.1. ソケット

ソケットはTCPやUDPなどの通信の終端です。TCPやUDPの通信は必ず両端がソケットで終端されています。ソケットは、コンピュータの特定のポート番号と関連づけられます。ポート番号で識別できるため、一台のホストで複数のソケットを同時に取り扱うことが可能です。アプリケーションプログラムの通信処理は、ソケットに対して読み書きすることで実現されます。

ソケットのイメージ

ソケットを表現するクラスには次の4つが用意されています。これらのクラスはすべてjava.netパッケージに含まれています。IP通信を行うためのクラスの多くはjava.netパッケージに含まれます。

クラス
説明
Socket

TCP用のソケット

ServerSocket
TCP用のサーバソケット(新しい接続を受け付けるソケット)
DatagramSocket
UDP用のソケット
MulticastSocket

UDPのマルチキャスト用ソケット

2.2. InetAddressクラス

InetAddressはIPアドレスを取り扱うためのクラスです。IPアドレスはIPv4とIPv6でデータの長さや表現方法が異なるため、それぞれInetAddressのサブクラスであるInet4AddressとInet6Addressで表現されます。

InetAddressのインスタンスを新しく生成するには、通常はコンストラクタは用いません。次のようなInetAddressクラスのstaticメソッドを利用して生成します。

  • static InetAddress getByAddress(byte[] address);
  • static InetAddress getByAddress(String name, byte[] address);
  • static InetAddress getName (String name);

InetAddressは、ホスト名またはIPアドレス(もしくはその両方)を指定して作成することができます。addressにはIPアドレスのバイト配列を指定し、nameにはホスト名を指定します。nameにはIPアドレスの文字列表現を指定することもできます。例えば、次の二つの文は全く同じ結果を返します(211はbyte型の範囲(-128〜127)を超えているためキャストしています) 。

  • InetAddress adr = InetAddress.getByAddress(new byte[] { (byte)211, 125, 78, 77 });
  • InetAddress adr = InetAddress.getByName("211,125,78,77");

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp