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, setTrafficClass
public 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
NetworkInterface
SocketException
- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。setNetworkInterface(NetworkInterface)
public void setLoopbackMode(boolean disable) throws SocketException
このオプションはヒントなので、アプリケーションでループバック・モードの設定を調べる必要がある場合は、getLoopbackMode()
を呼び出してください。
disable
−LoopbackModeを無効にする場合はtrue
SocketException
−値の設定中にエラーが発生した場合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, 2014, Oracle and/or its affiliates. All rights reserved.