|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.net.DatagramSocket | +--java.net.MulticastSocket
マルチキャストデータグラムソケットクラスは、IP マルチキャストパケットを送受信するときに役立ちます。MulticastSocket は、インターネット上の他のマルチキャストホストの「グループ」に参加する追加機能を持つ (UDP) DatagramSocket です。
マルチキャストグループを指定するには、クラス D の IP アドレス (224.0.0.1
〜 239.255.255.255
の範囲) と標準的な UDP ポート番号を使用します。マルチキャストグループに参加するには、まず目的のポートを使用して MulticastSocket を作成し、次に joinGroup(InetAddress groupAddr)
メソッドを呼び出します。次に例を示します。
// join a Multicast group and send the group salutations ... byte[] msg = {'H', 'e', 'l', 'l', 'o'}; InetAddress group = InetAddress.getByName("228.5.6.7"); MulticastSocket s = new MulticastSocket(6789); s.joinGroup(group); DatagramPacket hi = new DatagramPacket(msg, 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()
推奨されません。 代わりに getTimeToLive メソッドを使用してください。このメソッドでは、有効期間を 0 〜 255 (0 は含まない) の範囲で取得可能です。 |
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)
推奨されません。 代わりに setTimeToLive メソッドを使用してください。このメソッドでは、有効期間を 0 〜 255 (0 は含まない) の範囲で設定可能です。 |
クラス java.net.DatagramSocket から継承したメソッド |
close,
connect,
disconnect,
getInetAddress,
getLocalAddress,
getLocalPort,
getPort,
getReceiveBufferSize,
getSendBufferSize,
getSoTimeout,
receive,
send,
setReceiveBufferSize,
setSendBufferSize,
setSoTimeout |
クラス java.lang.Object から継承したメソッド |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
コンストラクタの詳細 |
public MulticastSocket() throws IOException
セキュリティマネージャが存在する場合、まずセキュリティマネージャの checkListen
が、引数として 0 を指定して呼び出され、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。
checkListen
メソッドがこの操作を許可しない場合SecurityManager.checkListen(int)
public MulticastSocket(int port) throws IOException
セキュリティマネージャが存在する場合、まずセキュリティマネージャの checkListen
メソッドが、引数として port
を指定して呼び出され、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。
port
- 使用するポートcheckListen
メソッドがこの操作を許可しない場合SecurityManager.checkListen(int)
メソッドの詳細 |
public void setTTL(byte ttl) throws IOException
DatagramPackets
の IP 有効期間を設定し、有効期間が切れるまでにパケットが転送される「ホップ」の数を指定します。
このメソッドは、有効期間の値を 1 〜 127 の範囲に設定する場合にだけ使用できます。値がこの範囲内にない場合、このメソッドの動作は保証されません。
ttl
- 有効期間public void setTimeToLive(int ttl) throws IOException
DatagramPackets
の IP 有効期間を設定することにより、有効期間が切れるまでにパケットが転送される「ホップ」の数が指定されます。
ttl の範囲は 0 < ttl <= 255
でなければなりません。そうでない場合は、IllegalArgumentException がスローされます。
ttl
- 有効期間public byte getTTL() throws IOException
public int getTimeToLive() throws IOException
public void joinGroup(InetAddress mcastaddr) throws IOException
セキュリティマネージャが存在する場合、まずセキュリティマネージャの checkMulticast
メソッドが、引数として mcastaddr
を指定して呼び出されます。
mcastaddr
- 参加するマルチキャストアドレスcheckMulticast
メソッドが参加を許可しない場合SecurityManager.checkMulticast(InetAddress)
public void leaveGroup(InetAddress mcastaddr) throws IOException
セキュリティマネージャが存在する場合、まずセキュリティマネージャの checkMulticast
メソッドが、引数として mcastaddr
を指定して呼び出されます。
mcastaddr
- マルチキャストアドレスcheckMulticast
メソッドがこの操作を許可しない場合SecurityManager.checkMulticast(InetAddress)
public void setInterface(InetAddress inf) throws SocketException
public InetAddress getInterface() throws SocketException
public void send(DatagramPacket p, byte ttl) throws IOException
セキュリティマネージャが存在する場合、このメソッドはまずなんらかのセキュリティチェックを実行します。p.getAddress().isMulticastAddress()
が true であれば、このメソッドは最初に、セキュリティマネージャの checkMulticast
メソッドを、引数として p.getAddress()
および ttl
を指定して呼び出します。上記の式の結果が false である場合、このメソッドは代わりにセキュリティマネージャの checkConnect
メソッドを、引数として p.getAddress().getHostAddress()
および p.getPort()
を指定して呼び出します。この操作が許可されていない場合、セキュリティマネージャの各メソッド呼び出しの結果は、SecurityException になることがあります。
p
- 送信するパケット。パケットには宛先マルチキャスト IP アドレスと、送信データが含まれる。宛先マルチキャストアドレスにパケットを送信するためには、そのグループのメンバである必要はないttl
- マルチキャストパケットの有効期間 (任意)。デフォルト値は 1checkMulticast
メソッドまたは checkConnect
が送信を許可しない場合DatagramSocket.send(java.net.DatagramPacket)
,
DatagramSocket.receive(java.net.DatagramPacket)
,
SecurityManager.checkMulticast(java.net.InetAddress, byte)
,
SecurityManager.checkConnect(java.lang.String, int)
|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |