public class MulticastSocket extends DatagramSocket
 マルチキャスト・グループは、クラスD IPアドレスと標準のUDPポート番号によって指定されます。 クラスD IPアドレスの範囲は、224.0.0.0から239.255.255.255までです。 アドレス224.0.0.0は予約されており、使用できません。 
 
 マルチキャスト・グループに参加するには、最初に目的のポートでMulticastSocketを作成し、続いてjoinGroup(InetAddress groupAddr)メソッドを呼び出します。
 
 // join a Multicast group and send the group salutations
 ...
 String msg = "Hello";
 InetAddress group = InetAddress.getByName("228.5.6.7");
 MulticastSocket s = new MulticastSocket(6789);
 s.joinGroup(group);
 DatagramPacket hi = new DatagramPacket(msg.getBytes(), 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はすべてグループ・データグラムを受信します。
現在のところ、アプレットではマルチキャスト・ソケットを使用することはできません。
| コンストラクタ | 説明 | 
|---|---|
| MulticastSocket() | マルチキャスト・ソケットを作成します。 | 
| MulticastSocket(int port) | 特定のポートにバインドされたマルチキャスト・ソケットを作成します。 | 
| MulticastSocket(SocketAddress bindaddr) | 指定されたソケット・アドレスにバインドされたMulticastSocketを作成します。 | 
| 修飾子と型 | メソッド | 説明 | 
|---|---|---|
| InetAddress | getInterface() | マルチキャスト・パケットに使用するネットワーク・インタフェースのアドレスを取得します。 | 
| boolean | getLoopbackMode() | マルチキャスト・データグラムのローカル・ループバックの設定値を取得します。 | 
| NetworkInterface | getNetworkInterface() | マルチキャスト・ネットワーク・インタフェース・セットを取得します。 | 
| int | getTimeToLive() | このソケットから送信されるマルチキャスト・パケットのデフォルトの有効期間を取得します。 | 
| byte | getTTL() | 非推奨。 
 代わりにgetTimeToLiveメソッドを使用してください。このメソッドは、byteではなくintを返します。 | 
| void | joinGroup(InetAddress mcastaddr) | あるマルチキャスト・グループに参加します。 | 
| void | joinGroup(SocketAddress mcastaddr, NetworkInterface netIf) | 指定されたインタフェースで指定されたマルチキャスト・グループに参加します。 | 
| void | leaveGroup(InetAddress mcastaddr) | あるマルチキャスト・グループから離れます。 | 
| void | leaveGroup(SocketAddress mcastaddr, NetworkInterface netIf) | 指定されたローカル・インタフェース上のマルチキャスト・グループから離れます。 | 
| void | send(DatagramPacket p, byte ttl) | 非推奨。 
 代わりに、次のコードまたはそれと同等のコードを使用してください。...... int ttl = mcastSocket.getTimeToLive(); mcastSocket.setTimeToLive(newttl); mcastSocket.send(p); mcastSocket.setTimeToLive(ttl); ...... | 
| void | setInterface(InetAddress inf) | ネットワーク・インタフェースの値によってその動作が影響をうけるメソッドが使用する、マルチキャスト・ネットワーク・インタフェースを設定します。 | 
| void | setLoopbackMode(boolean disable) | マルチキャスト・データグラムのローカル・ループバックを有効または無効にします。このオプションは、マルチキャスト・データをローカル・ソケットにループ・バックするかどうかを設定するヒントとして、プラットフォームのネットワーク・コードが使います。 | 
| void | setNetworkInterface(NetworkInterface netIf) | このソケットから送信される送出マルチキャスト・データグラム用のネットワーク・インタフェースを指定します。 | 
| void | setTimeToLive(int ttl) | マルチキャストのスコープを制御するために、この MulticastSocketから送信されるマルチキャスト・パケットのデフォルトの有効期間を設定します。 | 
| void | setTTL(byte ttl) | 非推奨。 
 代わりにsetTimeToLiveメソッドを使用してください。このメソッドはttlの型として、byteではなくintを使用します。 | 
bind, close, connect, connect, disconnect, getBroadcast, getChannel, getInetAddress, getLocalAddress, getLocalPort, getLocalSocketAddress, getPort, getReceiveBufferSize, getRemoteSocketAddress, getReuseAddress, getSendBufferSize, getSoTimeout, getTrafficClass, isBound, isClosed, isConnected, receive, send, setBroadcast, setDatagramSocketImplFactory, setReceiveBufferSize, setReuseAddress, setSendBufferSize, setSoTimeout, setTrafficClasspublic MulticastSocket()
                throws IOException
セキュリティ・マネージャが存在する場合、この操作が許可されるように、最初にそのcheckListenメソッドが0を引数に指定して呼び出されます。 この結果、SecurityExceptionがスローされることがあります。 
 
 ソケットが作成されると、SO_REUSEADDRソケット・オプションを有効にするために、DatagramSocket.setReuseAddress(boolean)メソッドが呼び出されます。
IOException - MulticastSocketの作成中に入出力例外が発生した場合SecurityException - セキュリティ・マネージャが存在し、そのcheckListenメソッドでこの操作が許可されていない場合。SecurityManager.checkListen(int), DatagramSocket.setReuseAddress(boolean)public MulticastSocket(int port)
                throws IOException
セキュリティ・マネージャが存在する場合、この操作が許可されるように、最初にそのcheckListenメソッドがport引数をその引数として指定して呼び出されます。 この結果、SecurityExceptionがスローされることがあります。 
 
 ソケットが作成されると、SO_REUSEADDRソケット・オプションを有効にするために、DatagramSocket.setReuseAddress(boolean)メソッドが呼び出されます。
port - 使用するポートIOException - MulticastSocketの作成中に入出力例外が発生した場合SecurityException - セキュリティ・マネージャが存在し、そのcheckListenメソッドでこの操作が許可されていない場合。SecurityManager.checkListen(int), DatagramSocket.setReuseAddress(boolean)public MulticastSocket(SocketAddress bindaddr) throws IOException
 あるいは、アドレスがnullの場合は、アンバウンドのソケットを作成します。
 
セキュリティ・マネージャが存在する場合、最初にそのcheckListenメソッドがSocketAddressポートを引数に指定して呼び出され、この操作が許可されるかどうかが確認されます。 この結果、SecurityExceptionがスローされることがあります。 
 
 ソケットが作成されると、SO_REUSEADDRソケット・オプションを有効にするために、DatagramSocket.setReuseAddress(boolean)メソッドが呼び出されます。
bindaddr−バインドするソケット・アドレス。アンバウンドのソケットの場合はnull。IOException - MulticastSocketの作成中に入出力例外が発生した場合SecurityException - セキュリティ・マネージャが存在し、そのcheckListenメソッドでこの操作が許可されていない場合。SecurityManager.checkListen(int), DatagramSocket.setReuseAddress(boolean)@Deprecated public void setTTL(byte ttl) throws IOException
MulticastSocketから送信されるマルチキャスト・パケットのデフォルトの有効期間を設定します。
 ttlは符号なし8ビット・データなので、0 <= ttl <= 0xFFの範囲でなければいけません。
ttl - 有効期間IOException - デフォルトの有効期間値の設定中に入出力例外が発生した場合getTTL()public void setTimeToLive(int ttl)
                   throws IOException
MulticastSocketから送信されるマルチキャスト・パケットのデフォルトの有効期間を設定します。
  ttlの範囲は0 <= ttl <= 255でなければいけません。そうでない場合は、IllegalArgumentExceptionがスローされます。 TTLが0で送信されたマルチキャスト・パケットは、ネットワークでは転送されませんが、ローカルで転送されることがあります。 
ttl - 有効期間IOException - デフォルトの有効期間値の設定中に入出力例外が発生した場合getTimeToLive()@Deprecated public byte getTTL() throws IOException
IOException - デフォルトの有効期間値の取得中に入出力例外が発生した場合setTTL(byte)public int getTimeToLive()
                  throws IOException
IOException - デフォルトの有効期間値の取得中に入出力例外が発生した場合setTimeToLive(int)public void joinGroup(InetAddress mcastaddr) throws IOException
setInterfaceまたはsetNetworkInterfaceの影響を受ける可能性があります。 
 セキュリティ・マネージャが存在する場合、このメソッドは最初に、mcastaddrを引数に指定してcheckMulticastメソッドを呼び出します。
mcastaddr - 参加するマルチキャスト・アドレスIOException - 参加時にエラーが発生した場合、またはアドレスがマルチキャスト・アドレスでない場合。SecurityException - セキュリティ・マネージャが存在し、そのcheckMulticastメソッドが参加を許可しない場合。SecurityManager.checkMulticast(InetAddress)public void leaveGroup(InetAddress mcastaddr) throws IOException
setInterfaceまたはsetNetworkInterfaceの影響を受ける可能性があります。 
 セキュリティ・マネージャが存在する場合、このメソッドは最初に、mcastaddrを引数に指定してcheckMulticastメソッドを呼び出します。
mcastaddr - 離れるマルチキャスト・アドレスIOException - 離れる際にエラーが発生した場合、またはアドレスがマルチキャスト・アドレスでない場合。SecurityException - セキュリティ・マネージャが存在し、そのcheckMulticastメソッドでこの操作が許可されていない場合。SecurityManager.checkMulticast(InetAddress)public void joinGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException
セキュリティ・マネージャが存在する場合、このメソッドは最初に、mcastaddrを引数に指定してcheckMulticastメソッドを呼び出します。
mcastaddr - 参加するマルチキャスト・アドレスnetIf - マルチキャスト・データグラム・パケットを受信するローカル・インタフェースを指定します。または、nullを指定して、setInterface(InetAddress)またはsetNetworkInterface(NetworkInterface)によって設定されているインタフェースに従います。IOException - 参加時にエラーが発生した場合、またはアドレスがマルチキャスト・アドレスでない場合。SecurityException - セキュリティ・マネージャが存在し、そのcheckMulticastメソッドが参加を許可しない場合。IllegalArgumentException - mcastaddrがnullであるか、このソケットによってサポートされていないSocketAddressサブクラスである場合SecurityManager.checkMulticast(InetAddress)public void leaveGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException
セキュリティ・マネージャが存在する場合、このメソッドは最初に、mcastaddrを引数に指定してcheckMulticastメソッドを呼び出します。
mcastaddr - 離れるマルチキャスト・アドレスnetIf - ローカル・インタフェースを指定します。または、nullを指定して、setInterface(InetAddress)またはsetNetworkInterface(NetworkInterface)によって設定されているインタフェースに従います。IOException - 離れる際にエラーが発生した場合、またはアドレスがマルチキャスト・アドレスでない場合。SecurityException - セキュリティ・マネージャが存在し、そのcheckMulticastメソッドでこの操作が許可されていない場合。IllegalArgumentException - mcastaddrがnullであるか、このソケットによってサポートされていないSocketAddressサブクラスである場合SecurityManager.checkMulticast(InetAddress)public void setInterface(InetAddress inf) throws SocketException
inf − InetAddressSocketException - 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。getInterface()public InetAddress getInterface() throws SocketException
InetAddress。SocketException - 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。setInterface(java.net.InetAddress)public void setNetworkInterface(NetworkInterface netIf) throws SocketException
netIf−インタフェースSocketException - 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。getNetworkInterface()public NetworkInterface getNetworkInterface() throws SocketException
NetworkInterfaceSocketException - 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。setNetworkInterface(NetworkInterface)public void setLoopbackMode(boolean disable)
                     throws SocketException
このオプションはヒントなので、アプリケーションでループバック・モードの設定を調べる必要がある場合は、getLoopbackMode()を呼び出してください。
disable−LoopbackModeを無効にする場合はtrueSocketException−値の設定中にエラーが発生した場合getLoopbackMode()public boolean getLoopbackMode()
                        throws SocketException
SocketException−値の取得中にエラーが発生した場合setLoopbackMode(boolean)@Deprecated public void send(DatagramPacket p, byte ttl) throws IOException
setInterfaceの影響を受ける可能性があります。 
 セキュリティ・マネージャが存在する場合、このメソッドはまず、いくつかのセキュリティ・チェックを実行します。 最初に、p.getAddress().isMulticastAddress()がtrueの場合、このメソッドは引数としてp.getAddress()とttlを使い、セキュリティ・マネージャのcheckMulticastメソッドを呼び出します。 その式の評価がfalseの場合、このメソッドは代わりに、セキュリティ・マネージャのcheckConnectメソッドを、引数p.getAddress().getHostAddress()とp.getPort()を指定して呼び出します。 それぞれのセキュリティ・マネージャ・メソッド呼出しの結果、操作が許可されない場合はSecurityExceptionがスローされます。 
p−送信されるパケット。 パケットには、宛先のマルチキャストIPアドレスと送信対象のデータを含めるべきである。 ある宛先マルチキャスト・アドレスにパケットを送信するには、そのグループのメンバーである必要はない。 ttl−マルチキャスト・パケットの有効期間(オプション)。デフォルトttl値は1。IOException−エラーが発生した場合、具体的にはttlの設定中にエラーが発生した場合に発行されます。SecurityException - セキュリティ・マネージャが存在し、そのcheckMulticastまたはcheckConnectメソッドが送信を許可しない場合。DatagramSocket.send(java.net.DatagramPacket), DatagramSocket.receive(java.net.DatagramPacket), SecurityManager.checkMulticast(java.net.InetAddress, byte), SecurityManager.checkConnect(java.lang.String, int) バグまたは機能を送信 
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。 
 Copyright © 1993, 2025, Oracle and/or its affiliates.  All rights reserved.  Use is subject to license terms.  Documentation Redistribution Policyも参照してください。