全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス
java.lang.Object | +----java.net.DatagramSocket | +----java.net.MulticastSocket
マルチキャストグループを指定するには、クラス 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 はすべて同じグループデータグラムを受信します。
現在のところ、アプレットではマルチキャストソケットを使用することはできません。
public MulticastSocket() throws IOException
public MulticastSocket(int port) throws IOException
public void setTTL(byte ttl) throws IOException
DatagramPackets
の IP 有効期間を設定します。つまり、期限が切れるまでに、そのパケットをネットワーク上で何回「ホップ」するかを設定します。
ttl は 符号なしの 8 ビットで指定します。また 0 < ttl <= 0xFF
の範囲内でなければなりません。
public byte getTTL() throws IOException
public void joinGroup(InetAddress mcastaddr) throws IOException
public void leaveGroup(InetAddress mcastaddr) throws IOException
public void setInterface(InetAddress inf) throws SocketException
public InetAddress getInterface() throws SocketException
public synchronized void send(DatagramPacket p, byte ttl) throws IOException
全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス