public class MulticastSocket extends DatagramSocket
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 and Description |
|---|
MulticastSocket()
Create a multicast socket.
|
MulticastSocket(int port)
Create a multicast socket and bind it to a specific port.
|
MulticastSocket(SocketAddress bindaddr)
Create a MulticastSocket bound to the specified socket address.
|
| Modifier and Type | Method and Description |
|---|---|
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.
|
void |
joinGroup(InetAddress mcastaddr)
Joins a multicast group.
|
void |
joinGroup(SocketAddress mcastaddr,
NetworkInterface netIf)
Joins the specified multicast group at the specified interface.
|
void |
leaveGroup(InetAddress mcastaddr)
Leave a multicast group.
|
void |
leaveGroup(SocketAddress mcastaddr,
NetworkInterface netIf)
Leave a multicast group on a specified local interface.
|
void |
setInterface(InetAddress inf)
Set the multicast network interface used by methods whose behavior would be affected by the value of the network
interface.
|
void |
setLoopbackMode(boolean disable)
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(NetworkInterface netIf)
Specify the network interface for outgoing multicast datagrams sent on this socket.
|
void |
setTimeToLive(int ttl)
Set the default time-to-live for multicast packets sent out on this
MulticastSocket in order to control
the scope of the multicasts. |
bind, close, connect, connect, disconnect, getBroadcast, getInetAddress, getLocalAddress, getLocalPort, getLocalSocketAddress, getPort, getReceiveBufferSize, getRemoteSocketAddress, getReuseAddress, getSendBufferSize, getSoTimeout, getTrafficClass, isBound, isClosed, isConnected, receive, send, setBroadcast, setReceiveBufferSize, setReuseAddress, setSendBufferSize, setSoTimeout, setTrafficClasspublic 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.
IOException - if an I/O exception occurs while creating the MulticastSocketSecurityException - if a security manager exists and its checkListen method doesn't allow the operation.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.
port - port to useIOException - if an I/O exception occurs while creating the MulticastSocketSecurityException - if a security manager exists and its checkListen method doesn't allow the operation.public MulticastSocket(@Nullable 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.
bindaddr - Socket address to bind to, or null for an unbound socket.IOException - if an I/O exception occurs while creating the MulticastSocketSecurityException - if a security manager exists and its checkListen method doesn't allow the operation.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 boolean getLoopbackMode()
throws SocketException
SocketException - if an error occurs while getting the valuesetLoopbackMode(boolean)public NetworkInterface getNetworkInterface() throws SocketException
NetworkInterface currently setSocketException - if there is an error in the underlying protocol, such as a TCP error.setNetworkInterface(NetworkInterface)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 joinIOException - 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.public void joinGroup(SocketAddress mcastaddr, @Nullable 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 socketpublic 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 leaveIOException - 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.public void leaveGroup(SocketAddress mcastaddr, @Nullable 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 socketpublic void setInterface(InetAddress inf) throws SocketException
inf - the InetAddressSocketException - if there is an error in the underlying protocol, such as a TCP error.getInterface()public void setLoopbackMode(boolean disable)
throws SocketException
Because this option is a hint, applications that want to verify what loopback mode is set to should call
getLoopbackMode()
disable - true to disable the LoopbackModeSocketException - if an error occurs while setting the valuegetLoopbackMode()public void setNetworkInterface(NetworkInterface netIf) throws SocketException
netIf - the interfaceSocketException - if there is an error in the underlying protocol, such as a TCP error.getNetworkInterface()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. Multicast packets sent with a TTL of 0 are
not transmitted on the network but may be delivered locally.
ttl - the time-to-liveIOException - if an I/O exception occurs while setting the default time-to-live valuegetTimeToLive()