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