- すべてのスーパー・インタフェース:
- AutoCloseable,- Channel,- Closeable,- NetworkChannel
- 既知のすべての実装クラス:
- DatagramChannel
public interface MulticastChannel extends NetworkChannel
IPマルチキャストとは、単一の宛先アドレスで識別されたゼロ以上のホストであるグループのメンバーにIPデータグラムを転送することです。
 IPv4ソケットへのチャネルの場合、基盤となるオペレーティング・システムはオプションで「RFC 2236: インターネット・グループ管理プロトコル、バージョン2 (IGMPv2)」をサポートします。 IGMPv2がサポートされている場合、オペレーティング・システムは、「RFC 3376: インターネット・グループ管理プロトコル、バージョン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メソッドを呼び出すと、ソース・アドレスからのデータグラムを受信できなくなるように、メンバーシップがドロップされます。 
 
プラットフォームの依存性
マルチキャスト実装は、ネイティブ・マルチキャスト機能に直接マッピングすることを目的としています。 そのため、IPマルチキャスト・データグラムを受信するアプリケーションの開発時には、次の項目を考慮するべきです。- チャネルの作成では、チャネルが参加するマルチキャスト・グループのアドレス・タイプに対応する - 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);
 - 導入されたバージョン:
- 1.7
- 
メソッドのサマリー修飾子と型 メソッド 説明 voidclose()現在のチャネルをクローズします。MembershipKeyjoin(InetAddress group, NetworkInterface interf)マルチキャスト・グループに参加してそのグループに送信されるすべてのデータグラムの受信を開始し、メンバー・キーを返します。MembershipKeyjoin(InetAddress group, NetworkInterface interf, InetAddress source)マルチキャスト・グループに参加して、指定されたソース・アドレスからそのグループに送信されるデータグラムの受信を開始します。インタフェース java.nio.channels.NetworkChannelで宣言されたメソッドbind, getLocalAddress, getOption, setOption, supportedOptions
- 
メソッドの詳細- 
closevoid close() throws IOException現在のチャネルをクローズします。チャネルがマルチキャスト・グループのメンバーである場合、メンバーシップは ドロップされます。 返されたときに、membership-keyは無効になります。それ以外の場合は、このメソッドは Channelインタフェースの指定どおりに動作します。- 定義:
- close、インタフェース:- AutoCloseable
- 定義:
- close、インタフェース:- Channel
- 定義:
- close、インタフェース:- Closeable
- 例外:
- IOException- 入出力エラーが発生した場合
 
- 
joinMembershipKey join(InetAddress group, NetworkInterface interf) throws IOExceptionマルチキャスト・グループに参加してそのグループに送信されるすべてのデータグラムの受信を開始し、メンバー・キーを返します。このチャネルが現在、すべてのデータグラムを受信するために、指定したインタフェース上のグループのメンバーである場合、そのメンバーシップを表すメンバー・キーが返されます。 それ以外の場合は、このチャネルはグループに参加し、結果の新しいメンバー・キーが返されます。 結果のメンバー・キーは ソース固有ではありません。マルチキャスト・チャネルは、複数のインタフェース上の同一グループを含む、複数のマルチキャスト・グループに参加できます。 実装によっては、同時に参加できるグループの数に関する制限が適用される場合があります。 - パラメータ:
- group- 参加するマルチキャスト・アドレス
- interf- グループに参加するためのネットワーク・インタフェース
- 戻り値:
- メンバー・キー
- 例外:
- IllegalArgumentException- groupパラメータが- マルチキャスト・アドレスではないか、groupパラメータが、このチャネルでサポートされないアドレス・タイプである場合
- IllegalStateException- チャネルに、インタフェース上のグループのソース固有のメンバーシップがすでにある場合
- UnsupportedOperationException- チャネル・ソケットがインターネット・プロトコル・ソケットでない場合、またはプラットフォームがマルチキャストをサポートしていない場合
- ClosedChannelException- このチャネルがクローズしている場合
- IOException- 入出力エラーが発生した場合
- SecurityException- セキュリティ・マネージャが設定されており、その- checkMulticastメソッドはマルチキャスト・グループへのアクセスを拒否
 
- 
joinMembershipKey join(InetAddress group, NetworkInterface interf, InetAddress source) throws IOExceptionマルチキャスト・グループに参加して、指定されたソース・アドレスからそのグループに送信されるデータグラムの受信を開始します。このチャネルが現在、指定されたソース・アドレスからのデータグラムを受信するために、指定されたインタフェース上のグループのメンバーである場合、そのメンバーシップを表すメンバー・キーが返されます。 それ以外の場合は、このチャネルはグループに参加し、結果の新しいメンバー・キーが返されます。 結果のメンバー・キーは ソース固有です。メンバーシップは累積され、同じグループとインタフェースでこのメソッドを再度呼び出して、ほかのソース・アドレスによってグループに送信されたデータグラムを受信できるようにすることができます。 - パラメータ:
- group- 参加するマルチキャスト・アドレス
- interf- グループに参加するためのネットワーク・インタフェース
- source- ソース・アドレス
- 戻り値:
- メンバー・キー
- 例外:
- IllegalArgumentException- groupパラメータが- マルチキャスト・アドレスではないか、sourceパラメータがユニキャスト・アドレスではないか、groupパラメータが、このチャネルでサポートされないアドレス・タイプであるか、sourceパラメータがグループと同じアドレス・タイプではない場合
- IllegalStateException- チャネルが現在、すべてのデータグラムを受信するために、指定したインタフェース上のグループのメンバーである場合
- UnsupportedOperationException- チャネル・ソケットがインターネット・プロトコル・ソケットでない場合、またはソース・フィルタ・リングがサポートされていない場合、またはプラットフォームがマルチキャストをサポートしていない場合
- ClosedChannelException- このチャネルがクローズしている場合
- IOException- 入出力エラーが発生した場合
- SecurityException- セキュリティ・マネージャが設定されており、その- checkMulticastメソッドはマルチキャスト・グループへのアクセスを拒否
 
 
-