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()