public interface MulticastChannel extends NetworkChannel
IPマルチキャストとは、単一の宛先アドレスで識別されたゼロ以上のホストであるグループのメンバーにIPデータグラムを転送することです。
IPv4ソケットへのチャネルの場合、基本となるオペレーティング・システムでは「RFC 2236: Internet Group Management Protocol, Version 2 (IGMPv2)」がサポートされます。 これは、「RFC 3376: Internet Group Management Protocol, Version 3 (IGMPv3)」で指定されているように、オプションでソースのフィルタリングをサポートすることがあります。 IPv6ソケットへのチャネルでは、同等の標準は「RFC 2710: Multicast Listener Discovery (MLD) for IPv6」と「RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) for IPv6」です。
join(InetAddress,NetworkInterface)メソッドは、グループに参加し、そのグループに送信されるすべてのマルチキャスト・データグラムを受信するために使用されます。 チャネルは複数のマルチキャスト・グループに参加することも、複数のinterfacesで同じグループに参加することもできます。 メンバーシップは、返されたMembershipKeyでdropメソッドを呼び出すことでドロップされます。 基本となるプラットフォームでソースのフィルタリングがサポートされる場合、blockメソッドとunblockメソッドを使用して、特定のソース・アドレスからマルチキャスト・データグラムをブロックまたはブロック解除することができます。
join(InetAddress,NetworkInterface,InetAddress)メソッドは、指定したソース・アドレスと一致するソース・アドレスを持つグループに送信されたデータグラムの受信を開始するために使用されます。 基本となるプラットフォームでソースのフィルタリングがサポートされない場合、このメソッドはUnsupportedOperationExceptionをスローします。 メンバーシップは累積され、同じグループとインタフェースでこのメソッドを再度呼び出して、ほかのソース・アドレスからのデータグラムを受信できるようにすることができます。 このメソッドは、指定されたソース・アドレスからのデータグラムを受信するためのメンバーシップを表すMembershipKeyを返します。 キーのdropメソッドを呼び出すと、ソース・アドレスからのデータグラムを受信できなくなるように、メンバーシップがドロップされます。
チャネルの作成では、チャネルが参加するマルチキャスト・グループのアドレス・タイプに対応するProtocolFamilyを指定するべきです。 あるマルチキャスト・グループのアドレスが別のプロトコル・ファミリに対応するとき、一方のプロトコル・ファミリ内ソケットのチャネルの参加およびマルチキャスト・データグラム受信の可能性は保証されません。 たとえば、IPv6ソケットへのチャネルがIPv4マルチキャスト・グループに参加して、そのグループに送信されたマルチキャスト・データグラムを受信できるかどうかは実装によって異なります。
チャネルのソケットは、ワイルドカード・アドレスにバインドするべきです。 ソケットが、ワイルドカード・アドレスではなく特定のアドレスにバインドされている場合、ソケットがマルチキャスト・データグラムを受信するかどうかは実装によって異なります。
SO_REUSEADDRオプションは、ソケットをバインドする前に有効にしてください。 これは、グループの複数のメンバーを同じアドレスにバインドできるようにするために必要です。
使用例:
// join multicast group on this interface, and also use this
// interface for outgoing multicast datagrams
NetworkInterface ni = NetworkInterface.getByName("hme0");
DatagramChannel dc = DatagramChannel.open(StandardProtocolFamily.INET)
.setOption(StandardSocketOptions.SO_REUSEADDR, true)
.bind(new InetSocketAddress(5000))
.setOption(StandardSocketOptions.IP_MULTICAST_IF, ni);
InetAddress group = InetAddress.getByName("225.4.5.6");
MembershipKey key = dc.join(group, ni);
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
void |
close() |
現在のチャネルをクローズします。
|
MembershipKey |
join(InetAddress group, NetworkInterface interf) |
マルチキャスト・グループに参加してそのグループに送信されるすべてのデータグラムの受信を開始し、メンバー・キーを返します。
|
MembershipKey |
join(InetAddress group, NetworkInterface interf, InetAddress source) |
マルチキャスト・グループに参加して、指定されたソース・アドレスからそのグループに送信されるデータグラムの受信を開始します。
|
bind, getLocalAddress, getOption, setOption, supportedOptionsvoid close()
throws IOException
チャネルがマルチキャスト・グループのメンバーである場合、メンバーシップはドロップされます。 返されたときに、membership-keyは無効になります。
それ以外の場合は、このメソッドはChannelインタフェースの指定どおりに動作します。
close、インタフェースAutoCloseableclose、インタフェースChannelclose、インタフェースCloseableIOException - 入出力エラーが発生した場合MembershipKey join(InetAddress group, NetworkInterface interf) throws IOException
このチャネルが現在、すべてのデータグラムを受信するために、指定したインタフェース上のグループのメンバーである場合、そのメンバーシップを表すメンバー・キーが返されます。 それ以外の場合は、このチャネルはグループに参加し、結果の新しいメンバー・キーが返されます。 結果のメンバー・キーはソース固有ではありません。
マルチキャスト・チャネルは、複数のインタフェース上の同一グループを含む、複数のマルチキャスト・グループに参加できます。 実装によっては、同時に参加できるグループの数に関する制限が適用される場合があります。
group - 参加するマルチキャスト・アドレスinterf - グループに参加するためのネットワーク・インタフェースIllegalArgumentException - groupパラメータがマルチキャスト・アドレスではないか、groupパラメータが、このチャネルでサポートされないアドレス・タイプである場合IllegalStateException - チャネルに、インタフェース上のグループのソース固有のメンバーシップがすでにある場合UnsupportedOperationException - チャネルのソケットがInternet Protocolソケットではない場合ClosedChannelException - このチャネルがクローズしている場合IOException - 入出力エラーが発生した場合SecurityException - セキュリティ・マネージャが存在し、そのcheckMulticastメソッドがマルチキャスト・グループへのアクセスを拒否した場合MembershipKey join(InetAddress group, NetworkInterface interf, InetAddress source) throws IOException
このチャネルが現在、指定されたソース・アドレスからのデータグラムを受信するために、指定されたインタフェース上のグループのメンバーである場合、そのメンバーシップを表すメンバー・キーが返されます。 それ以外の場合は、このチャネルはグループに参加し、結果の新しいメンバー・キーが返されます。 結果のメンバー・キーはソース固有です。
メンバーシップは累積され、同じグループとインタフェースでこのメソッドを再度呼び出して、ほかのソース・アドレスによってグループに送信されたデータグラムを受信できるようにすることができます。
group - 参加するマルチキャスト・アドレスinterf - グループに参加するためのネットワーク・インタフェースsource - ソース・アドレスIllegalArgumentException - groupパラメータがマルチキャスト・アドレスではないか、sourceパラメータがユニキャスト・アドレスではないか、groupパラメータが、このチャネルでサポートされないアドレス・タイプであるか、sourceパラメータがグループと同じアドレス・タイプではない場合IllegalStateException - チャネルが現在、すべてのデータグラムを受信するために、指定したインタフェース上のグループのメンバーである場合UnsupportedOperationException - チャネルのソケットがInternet Protocolソケットではないか、ソースのフィルタリングがサポートされない場合ClosedChannelException - このチャネルがクローズしている場合IOException - 入出力エラーが発生した場合SecurityException - セキュリティ・マネージャが存在し、そのcheckMulticastメソッドがマルチキャスト・グループへのアクセスを拒否した場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。