全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス

クラス java.net.MulticastSocket

java.lang.Object
   |
   +----java.net.DatagramSocket
           |
           +----java.net.MulticastSocket

public class MulticastSocket
extends DatagramSocket
マルチキャストデータグラムソケットクラスは、IP マルチキャストパケットを送受信するときに便利です。MulticastSocket は、インターネット上の他のマルチキャストホストの「グループ」に参加する追加機能をもった (UDP) DatagramSocket です。

マルチキャストグループを指定するには、クラス D IP アドレス (224.0.0.1 から 239.255.255.255 までの範囲) と標準的な UDP ポート番号を使用します。マルチキャストグループに参加するには、まず目的のポートを使用して MulticastSocket を作成し、次に joinGroup(InetAddress groupAddr) メソッドを呼び出します。次に例を示します。

 // join a Multicast group and send the group salutations
 ...
 byte[] msg = {'H', 'e', 'l', 'l', 'o'};
 InetAddress group = InetAddress.getByName("228.5.6.7");
 MulticastSocket s = new MulticastSocket(6789);
 s.joinGroup(group);
 DatagramPacket hi = new DatagramPacket(msg, msg.length,
                             group, 6789);
 s.send(hi);
 // get their responses! 
 byte[] buf = new byte[1000];
 DatagramPacket recv = new DatagramPacket(buf, buf.length);
 s.receive(recv);
 ...
 // OK, I'm done talking - leave the group...
 s.leaveGroup(group);
 
マルチキャストグループにメッセージを送信すると、そのホストとポートのすべての参加者がメッセージを受け取ります (ただしパケットの有効期間内に限られます。詳細は後述します)。マルチキャストグループにメッセージを送信するためには、ソケットがそのマルチキャストグループのメンバである必要はありません。

ソケットがマルチキャストグループまたはポートに参加すると、他のホストからそのグループまたはポートに送信されたデータグラムを受信することができます。そのグループとポートの他のメンバもすべて同じデータグラムを受信します。ソケットをグループから外すには、leaveGroup(InetAddress addr) メソッドを使用します。 複数の MulticastSocket が同時にマルチキャストグループとポートに参加することができ、それらの MulticastSocket はすべて同じグループデータグラムを受信します。

現在のところ、アプレットではマルチキャストソケットを使用することはできません。


Constructor Index

 o MulticastSocket()
マルチキャストソケットを作成する。
 o MulticastSocket(int)
マルチキャストソケットを作成し、特定のポートに結合する。

Method Index

 o getInterface()
マルチキャストパケットに使用されるネットワークインタフェースのアドレスを取得する。
 o getTTL()
ソケットから送信するマルチキャストパケットのデフォルトの有効期間を取得する。
 o joinGroup(InetAddress)
マルチキャストグループに参加する。
 o leaveGroup(InetAddress)
マルチキャストグループから外れる。
 o send(DatagramPacket, byte)
そのソケットのデフォルト以外の TTL (有効期間) を指定して、データグラムパケットを宛先に送信する。
 o setInterface(InetAddress)
このソケットのマルチキャストパケット出力用ネットワークインタフェースをシステムデフォルト値以外に設定する。
 o setTTL(byte)
このソケットから送信するマルチキャストパケットのデフォルトの有効期間を設定する。

Constructors

 o MulticastSocket
  public MulticastSocket() throws IOException
マルチキャストソケットを作成します。

 o MulticastSocket
  public MulticastSocket(int port) throws IOException
特定のポートに結合されたマルチキャストソケットを作成します。

パラメータ:
local - 使用するポート

Methods

 o setTTL
  public void setTTL(byte ttl) throws IOException
このソケットから送信するマルチキャストパケットのデフォルトの有効期間を設定します。TTL は MulticastGroup に送信される DatagramPackets の IP 有効期間を設定します。つまり、期限が切れるまでに、そのパケットをネットワーク上で何回「ホップ」するかを設定します。

ttl は 符号なしの 8 ビットで指定します。また 0 < ttl <= 0xFF の範囲内でなければなりません

パラメータ:
ttl - 有効期間
 o getTTL
  public byte getTTL() throws IOException
このソケットから送信されるマルチキャストパケットのデフォルトの有効期間を取得します。

 o joinGroup
  public void joinGroup(InetAddress mcastaddr) throws IOException
マルチキャストグループに参加します。

パラメータ:
mcastaddr - 参加するマルチキャストアドレス
例外 : IOException
参加する際にエラーが発生した、または指定したアドレスがマルチキャストアドレスではない
 o leaveGroup
  public void leaveGroup(InetAddress mcastaddr) throws IOException
マルチキャストグループから外れます。

パラメータ:
mcastaddr - マルチキャストアドレス
例外 : IOException
外れる際にエラーが発生した、または指定したアドレスがマルチキャストアドレスではない
 o setInterface
  public void setInterface(InetAddress inf) throws SocketException
このソケットのマルチキャストパケット用の、出力用ネットワークインタフェースを、システムのデフォルト値以外に設定します。マルチホームのホストに便利です。

 o getInterface
  public InetAddress getInterface() throws SocketException
マルチキャストパケットに使用するネットワークインタフェースのアドレスを取得します。

 o send
  public synchronized void send(DatagramPacket p,
                                byte ttl) throws IOException
そのソケットのデフォルト値以外の TTL (有効期間) を使用して、データグラムパケットを宛先に送信します。このメソッドは、特定の TTL を指定する必要がある場合にだけ使用します。それ以外の場合はそのソケットの TTL をいったん設定し、すべてのパケットにその TTL デフォルト値を使用するのが理想的です。このメソッドは、ソケットの TTL デフォルト値を変更しません

パラメータ:
p - 送信するパケット。パケットには宛先マルチキャスト IP アドレスと、送信データが含まれる。宛先マルチキャストアドレスにパケットを送信するためには、そのグループのメンバである必要はない。
ttl - マルチキャストパケットの有効期間 (任意)。デフォルト値は 1。
例外 : IOException
エラーが発生した (TTL の設定中にエラーが発生した)
参照:
send, receive

全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス