|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Object![]()
![]()
![]()
java.net.DatagramSocket
![]()
![]()
![]()
java.net.MulticastSocket
public class MulticastSocket

The multicast datagram socket class is useful for sending and receiving IP multicast packets. A MulticastSocket is a (UDP) DatagramSocket, with additional capabilities for joining "groups" of other multicast hosts on the internet.
A multicast group is specified by a class D IP address
and by a standard UDP port number. Class D IP addresses
are in the range 224.0.0.0 to 239.255.255.255,
inclusive. The address 224.0.0.0 is reserved and should not be used.
One would join a multicast group by first creating a MulticastSocket
with the desired port, then invoking the
joinGroup(InetAddress groupAddr)
method:
// 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);
When one sends a message to a multicast group, all subscribing
recipients to that host and port receive the message (within the
time-to-live range of the packet, see below). The socket needn't
be a member of the multicast group to send messages to it.
When a socket subscribes to a multicast group/port, it receives datagrams sent by other hosts to the group/port, as do all other members of the group and port. A socket relinquishes membership in a group by the leaveGroup(InetAddress addr) method. Multiple MulticastSocket's may subscribe to a multicast group and port concurrently, and they will all receive group datagrams.
Currently applets are not allowed to use multicast sockets.
| Constructor Summary | |
|---|---|
MulticastSocket
Create a multicast socket. |
|
MulticastSocket
Create a multicast socket and bind it to a specific port. |
|
MulticastSocket
Create a MulticastSocket bound to the specified socket address. |
|
| Method Summary | |
|---|---|
InetAddress |
getInterface
Retrieve the address of the network interface used for multicast packets. |
boolean |
getLoopbackMode
Get the setting for local loopback of multicast datagrams. |
NetworkInterface |
getNetworkInterface
Get the multicast network interface set. |
int |
getTimeToLive
Get the default time-to-live for multicast packets sent out on the socket. |
byte |
getTTL
Deprecated. use the getTimeToLive method instead, which returns an int instead of a byte. |
void |
joinGroup
Joins a multicast group. |
void |
joinGroup
Joins the specified multicast group at the specified interface. |
void |
leaveGroup
Leave a multicast group. |
void |
leaveGroup
Leave a multicast group on a specified local interface. |
void |
send
Deprecated. Use the following code or its equivalent instead: ...... int ttl = mcastSocket.getTimeToLive(); mcastSocket.setTimeToLive(newttl); mcastSocket.send(p); mcastSocket.setTimeToLive(ttl); ...... |
void |
setInterface
Set the multicast network interface used by methods whose behavior would be affected by the value of the network interface. |
void |
setLoopbackMode
Disable/Enable local loopback of multicast datagrams The option is used by the platform's networking code as a hint for setting whether multicast data will be looped back to the local socket. |
void |
setNetworkInterface
Specify the network interface for outgoing multicast datagrams sent on this socket. |
void |
setTimeToLive
Set the default time-to-live for multicast packets sent out on this MulticastSocket in order to control the
scope of the multicasts. |
void |
setTTL
Deprecated. use the setTimeToLive method instead, which uses int instead of byte as the type for ttl. |
Methods inherited from class java.net.DatagramSocket ![]() |
|---|
bind |
Methods inherited from class java.lang.Object ![]() |
|---|
clone |
| Constructor Detail |
|---|

public MulticastSocket()
throws IOException

If there is a security manager,
its checkListen method is first called
with 0 as its argument to ensure the operation is allowed.
This could result in a SecurityException.
When the socket is created the
DatagramSocket.setReuseAddress(boolean)
method is
called to enable the SO_REUSEADDR socket option.
IOException

- if an I/O exception occurs
while creating the MulticastSocket
SecurityException

- if a security manager exists and its
checkListen method doesn't allow the operation.SecurityManager.checkListen(int)
,
DatagramSocket.setReuseAddress(boolean)


public MulticastSocket(int port)
throws IOException

If there is a security manager,
its checkListen method is first called
with the port argument
as its argument to ensure the operation is allowed.
This could result in a SecurityException.
When the socket is created the
DatagramSocket.setReuseAddress(boolean)
method is
called to enable the SO_REUSEADDR socket option.
port - port to use
IOException

- if an I/O exception occurs
while creating the MulticastSocket
SecurityException

- if a security manager exists and its
checkListen method doesn't allow the operation.SecurityManager.checkListen(int)
,
DatagramSocket.setReuseAddress(boolean)


public MulticastSocket(SocketAddress![]()
![]()
bindaddr) throws IOException
![]()
![]()
Or, if the address is null, create an unbound socket.
If there is a security manager,
its checkListen method is first called
with the SocketAddress port as its argument to ensure the operation is allowed.
This could result in a SecurityException.
When the socket is created the
DatagramSocket.setReuseAddress(boolean)
method is
called to enable the SO_REUSEADDR socket option.
bindaddr - Socket address to bind to, or null for
an unbound socket.
IOException

- if an I/O exception occurs
while creating the MulticastSocket
SecurityException

- if a security manager exists and its
checkListen method doesn't allow the operation.SecurityManager.checkListen(int)
,
DatagramSocket.setReuseAddress(boolean)

| Method Detail |
|---|

@Deprecated
public void setTTL(byte ttl)
throws IOException

MulticastSocket in order to control the
scope of the multicasts.
The ttl is an unsigned 8-bit quantity, and so must be
in the range 0 <= ttl <= 0xFF .
ttl - the time-to-live
IOException

- if an I/O exception occurs
while setting the default time-to-live valuegetTTL()


public void setTimeToLive(int ttl)
throws IOException

MulticastSocket in order to control the
scope of the multicasts.
The ttl must be in the range 0 <= ttl <=
255 or an IllegalArgumentException will be thrown.
ttl - the time-to-live
IOException

- if an I/O exception occurs
while setting the default time-to-live valuegetTimeToLive()


@Deprecated
public byte getTTL()
throws IOException

IOException

- if an I/O exception occurs
while getting the default time-to-live valuesetTTL(byte)


public int getTimeToLive()
throws IOException

IOException

- if an I/O exception occurs while
getting the default time-to-live valuesetTimeToLive(int)


public void joinGroup(InetAddress![]()
![]()
mcastaddr) throws IOException
![]()
![]()
setInterface or setNetworkInterface.
If there is a security manager, this method first
calls its checkMulticast method
with the mcastaddr argument
as its argument.
mcastaddr - is the multicast address to join
IOException

- if there is an error joining
or when the address is not a multicast address.
SecurityException

- if a security manager exists and its
checkMulticast method doesn't allow the join.SecurityManager.checkMulticast(InetAddress)


public void leaveGroup(InetAddress![]()
![]()
mcastaddr) throws IOException
![]()
![]()
setInterface or setNetworkInterface.
If there is a security manager, this method first
calls its checkMulticast method
with the mcastaddr argument
as its argument.
mcastaddr - is the multicast address to leave
IOException

- if there is an error leaving
or when the address is not a multicast address.
SecurityException

- if a security manager exists and its
checkMulticast method doesn't allow the operation.SecurityManager.checkMulticast(InetAddress)


public void joinGroup(SocketAddress![]()
![]()
mcastaddr, NetworkInterface
![]()
![]()
netIf) throws IOException
![]()
![]()
If there is a security manager, this method first
calls its checkMulticast method
with the mcastaddr argument
as its argument.
mcastaddr - is the multicast address to joinnetIf - specifies the local interface to receive multicast
datagram packets, or null to defer to the interface set by
setInterface(InetAddress)
or
setNetworkInterface(NetworkInterface)
IOException

- if there is an error joining
or when the address is not a multicast address.
SecurityException

- if a security manager exists and its
checkMulticast method doesn't allow the join.
IllegalArgumentException

- if mcastaddr is null or is a
SocketAddress subclass not supported by this socketSecurityManager.checkMulticast(InetAddress)


public void leaveGroup(SocketAddress![]()
![]()
mcastaddr, NetworkInterface
![]()
![]()
netIf) throws IOException
![]()
![]()
If there is a security manager, this method first
calls its checkMulticast method
with the mcastaddr argument
as its argument.
mcastaddr - is the multicast address to leavenetIf - specifies the local interface or null to defer
to the interface set by
setInterface(InetAddress)
or
setNetworkInterface(NetworkInterface)
IOException

- if there is an error leaving
or when the address is not a multicast address.
SecurityException

- if a security manager exists and its
checkMulticast method doesn't allow the operation.
IllegalArgumentException

- if mcastaddr is null or is a
SocketAddress subclass not supported by this socketSecurityManager.checkMulticast(InetAddress)


public void setInterface(InetAddress![]()
![]()
inf) throws SocketException
![]()
![]()
inf - the InetAddress
SocketException

- if there is an error in
the underlying protocol, such as a TCP error.getInterface()


public InetAddress![]()
![]()
getInterface() throws SocketException
![]()
![]()
InetAddress representing
the address of the network interface used for
multicast packets.
SocketException

- if there is an error in
the underlying protocol, such as a TCP error.setInterface(java.net.InetAddress)


public void setNetworkInterface(NetworkInterface![]()
![]()
netIf) throws SocketException
![]()
![]()
netIf - the interface
SocketException

- if there is an error in
the underlying protocol, such as a TCP error.getNetworkInterface()
