|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Object
|
+--java.net.DatagramSocket
|
+--java.net.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)
特定のポートにバインドされたマルチキャストソケットを作成します。 |
|
| メソッドの概要 | |
InetAddress |
getInterface()
マルチキャストパケットに使用するネットワークインタフェースのアドレスを取得します。 |
int |
getTimeToLive()
このソケットから送信されるマルチキャストパケットのデフォルトの有効期間を取得します。 |
byte |
getTTL()
推奨されていません。 代わりに、byte ではなく int を返す getTimeToLive メソッドを使用します。 |
void |
joinGroup(InetAddress mcastaddr)
マルチキャストグループに参加します。 |
void |
leaveGroup(InetAddress mcastaddr)
マルチキャストグループから離れます。 |
void |
send(DatagramPacket p,
byte ttl)
そのソケットのデフォルト値以外の TTL (有効期間) を使用して、データグラムパケットを宛先に送信します。 |
void |
setInterface(InetAddress inf)
ネットワークインタフェースの値によってその動作が影響を受けるメソッドが使用する、マルチキャストネットワークインタフェースを設定します。 |
void |
setTimeToLive(int ttl)
このソケットで送出されるマルチキャストパケットの、デフォルトの有効期間 (TTL) を設定します。 |
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 になることがあります。
IOException - MulticastSocket の生成中に入出力例外が発生した場合SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkListen メソッドがこの操作を許可しない場合SecurityManager.checkListen(int)
public MulticastSocket(int port)
throws IOException
セキュリティマネージャが存在する場合、最初にセキュリティマネージャの checkListen メソッドが、引数として port を指定して呼び出され、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。
port - 使用するポートIOException - MulticastSocket の生成中に入出力例外が発生した場合SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkListen メソッドがこの操作を許可しない場合SecurityManager.checkListen(int)| メソッドの詳細 |
public void setTTL(byte ttl)
throws IOException
DatagramPackets の IP 有効期間を設定することにより、有効期間が切れるまでにネットワーク上でパケットが転送される「ホップ」の数が指定されます。
ttl は符号なし 8 ビットデータなので、0 <= ttl <= 0xFF の範囲でなければなりません。
ttl - 有効期間IOException - デフォルトの有効期間値を設定中に入出力例外が発生した場合getTTL()
public void setTimeToLive(int ttl)
throws IOException
DatagramPackets の IP 有効期間を設定することにより、有効期間が切れるまでにネットワーク上でパケットが転送される「ホップ」の数が指定されます。
ttl の範囲は 0 <= ttl <= 255 でなければなりません。そうでない場合は、IllegalArgumentException がスローされます。
ttl - 有効期間IOException - デフォルトの有効期間値を設定中に入出力例外が発生した場合getTimeToLive()
public byte getTTL()
throws IOException
IOException - デフォルトの有効期間値を取得中に入出力例外が発生した場合setTTL(byte)
public int getTimeToLive()
throws IOException
IOException - デフォルトの有効期間値を取得中に入出力例外が発生した場合setTimeToLive(int)
public void joinGroup(InetAddress mcastaddr)
throws IOException
setInterface の影響をうけることがあります。
セキュリティマネージャが存在する場合、最初にセキュリティマネージャの checkMulticast メソッドが、引数として mcastaddr を指定して呼び出されます。
mcastaddr - 参加するマルチキャストアドレスIOException - 参加にエラーがあるか、アドレスがマルチキャストアドレスでない場合SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkMulticast メソッドが参加を許可しない場合SecurityManager.checkMulticast(InetAddress)
public void leaveGroup(InetAddress mcastaddr)
throws IOException
setInterface の影響をうけることがあります。
セキュリティマネージャが存在する場合、最初にセキュリティマネージャの checkMulticast メソッドが、引数として mcastaddr を指定して呼び出されます。
mcastaddr - 離れるマルチキャストアドレスIOException - エラーが残っているか、アドレスがマルチキャストアドレスでない場合SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkMulticast メソッドがこの操作を許可しない場合SecurityManager.checkMulticast(InetAddress)
public void setInterface(InetAddress inf)
throws SocketException
inf - InetAddressSocketException - 使用しているプロトコルで TCP エラーなどのエラーが発生した場合getInterface()
public InetAddress getInterface()
throws SocketException
InetAddressSocketException - 使用しているプロトコルで TCP エラーなどのエラーが発生した場合setInterface(java.net.InetAddress)
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 値は 1IOException - エラーが発生した場合 (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 Std. Ed. v1.3 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.