|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjava.net.DatagramSocket
java.net.MulticastSocket
public class MulticastSocket
マルチキャストデータグラムソケットクラスは、IP マルチキャストパケットを送受信するときに役立ちます。MulticastSocket は、インターネット上のほかのマルチキャストホストの「グループ」に参加する追加機能を持つ (UDP) 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()
推奨されていません。 代わりに、byte ではなく int を返す getTimeToLive メソッドを使用します。 |
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)
推奨されていません。 代わりに、ttl の型として byte ではなく int を使う setTimeToLive メソッドを使用します。 |
| クラス java.lang.Object から継承されたメソッド |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| コンストラクタの詳細 |
|---|
public MulticastSocket()
throws IOException
セキュリティマネージャが存在する場合、最初にセキュリティマネージャの checkListen が、引数として 0 を指定して呼び出され、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。
ソケットが作成されると、DatagramSocket.setReuseAddress(boolean) メソッドが呼び出されて SO_REUSEADDR ソケットオプションが有効になります。
IOException - MulticastSocket の生成中に入出力例外が発生した場合
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkListen メソッドがこの操作を許可しない場合SecurityManager.checkListen(int),
DatagramSocket.setReuseAddress(boolean)
public MulticastSocket(int port)
throws IOException
セキュリティマネージャが存在する場合、最初にセキュリティマネージャの checkListen メソッドが、引数として port を指定して呼び出され、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。
ソケットが作成されると、DatagramSocket.setReuseAddress(boolean) メソッドが呼び出されて SO_REUSEADDR ソケットオプションが有効になります。
port - 使用するポート
IOException - MulticastSocket の生成中に入出力例外が発生した場合
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkListen メソッドがこの操作を許可しない場合SecurityManager.checkListen(int),
DatagramSocket.setReuseAddress(boolean)
public MulticastSocket(SocketAddress bindaddr)
throws IOException
あるいは、アドレスが null の場合は、アンバウンドのソケットを作成します。
セキュリティマネージャが存在する場合、最初にセキュリティマネージャの checkListen メソッドが、引数として SocketAddress ポートを指定して呼び出され、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。
ソケットが作成されると、DatagramSocket.setReuseAddress(boolean) メソッドが呼び出されて SO_REUSEADDR ソケットオプションが有効になります。
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 - 有効期間
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 の影響を受けることがあります。
セキュリティマネージャが存在する場合、最初にセキュリティマネージャの checkMulticast メソッドが、引数として mcastaddr を指定して呼び出されます。
mcastaddr - 参加するマルチキャストアドレス
IOException - 参加にエラーがあるか、アドレスがマルチキャストアドレスでない場合
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkMulticast メソッドが参加を許可しない場合SecurityManager.checkMulticast(InetAddress)
public void leaveGroup(InetAddress mcastaddr)
throws IOException
setInterface または setNetworkInterface の影響を受けることがあります。
セキュリティマネージャが存在する場合、最初にセキュリティマネージャの checkMulticast メソッドが、引数として mcastaddr を指定して呼び出されます。
mcastaddr - 離れるマルチキャストアドレス
IOException - エラーが残っているか、アドレスがマルチキャストアドレスでない場合
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkMulticast メソッドがこの操作を許可しない場合SecurityManager.checkMulticast(InetAddress)
public void joinGroup(SocketAddress mcastaddr,
NetworkInterface netIf)
throws IOException
セキュリティマネージャが存在する場合、最初にセキュリティマネージャの checkMulticast メソッドが、引数として mcastaddr を指定して呼び出されます。
mcastaddr - 参加するマルチキャストアドレスnetIf - マルチキャストデータグラムパケットを受信するローカルインタフェースを指定する。setInterface(InetAddress) または setNetworkInterface(NetworkInterface) によって設定されたインタフェースに従う場合は null
IOException - 参加にエラーがあるか、アドレスがマルチキャストアドレスでない場合
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkMulticast メソッドが参加を許可しない場合
IllegalArgumentException - mcastaddr が null である場合、またはアドレスがこのソケットでサポートされていない SocketAddress サブクラスである場合SecurityManager.checkMulticast(InetAddress)
public void leaveGroup(SocketAddress mcastaddr,
NetworkInterface netIf)
throws IOException
セキュリティマネージャが存在する場合、最初にセキュリティマネージャの checkMulticast メソッドが、引数として mcastaddr を指定して呼び出されます。
mcastaddr - 離れるマルチキャストアドレスnetIf - ローカルインタフェースを指定する。setInterface(InetAddress) または setNetworkInterface(NetworkInterface) によって設定されたインタフェースに従う場合は null
IOException - エラーが残っているか、アドレスがマルチキャストアドレスでない場合
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkMulticast メソッドがこの操作を許可しない場合
IllegalArgumentException - mcastaddr が null である場合、またはアドレスがこのソケットでサポートされていない SocketAddress サブクラスである場合SecurityManager.checkMulticast(InetAddress)
public void setInterface(InetAddress inf)
throws SocketException
inf - InetAddress
SocketException - 基本となるプロトコルで 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 であれば、このメソッドは最初に、セキュリティマネージャの checkMulticast メソッドを、引数として p.getAddress() および ttl を指定して呼び出します。上記の式の結果が 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)
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。