|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjava.net.DatagramSocket
java.net.MulticastSocket
public class MulticastSocket
マルチキャストデータグラムソケットクラスは、IP マルチキャストパケットを送受信する場合に役立ちます。MulticastSocket は、インターネット上のほかのマルチキャストホストの「グループ」に参加する機能が追加された (UDP) DatagramSocket です。
マルチキャストグループは、クラス D IP アドレスと標準の UDP ポート番号によって指定されます。クラス D IP アドレスの範囲は、239.255.255.255 から 224.0.0.0 までです。アドレス 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)
推奨されていません。 代わりに、次のコードまたはそれと同等のコードを使用してください。 ...... + context.getLifetime()); + context.getLifetime()); + context.getLifetime()); + context.getLifetime()); ...... |
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 を使用します。 |
| クラス 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 Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。