- All Implemented Interfaces:
-
Closeable , AutoCloseable
public class MulticastSocket
extends DatagramSocket
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 mcastaddr = InetAddress.getByName("228.5.6.7");
InetSocketAddress group = new InetSocketAddress(mcastaddr, port);
NetworkInterface netIf = NetworkInterface.getByName("bge0");
MulticastSocket s = new MulticastSocket(6789);
s.joinGroup(group, netIf);
byte[] msgBytes = msg.getBytes(StandardCharsets.UTF_8);
DatagramPacket hi = new DatagramPacket(msgBytes, msgBytes.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, netIf);
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(SocketAddress mcastaddr, NetworkInterface netIf) method. Multiple MulticastSockets may subscribe to a multicast group and port concurrently, and they will all receive group datagrams.
The DatagramSocket and MulticastSocket classes define convenience methods to set and get several socket options. Like DatagramSocket this class also supports the setOption and getOption methods to set and query socket options. In addition to the socket options supported by DatagramSocket , a MulticastSocket supports the following socket options:
Socket options
Option Name | Description |
IP_MULTICAST_IF | The network interface for Internet Protocol (IP) multicast datagrams |
IP_MULTICAST_TTL | The time-to-live for Internet Protocol (IP) multicast datagrams |
IP_MULTICAST_LOOP | Loopback for Internet Protocol (IP) multicast datagrams |
Additional (implementation specific) options may also be supported.
-
API Note:
-
DatagramChannel implements the MulticastChannel interface and provides an alternative API for sending and receiving multicast datagrams. The MulticastChannel API supports both any-source and source-specific multicast.
-
Since:
- 1.1
|
- All Implemented Interfaces:
-
Closeable , AutoCloseable
public class MulticastSocket
extends DatagramSocket
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 mcastaddr = InetAddress.getByName("228.5.6.7");
InetSocketAddress group = new InetSocketAddress(mcastaddr, port);
NetworkInterface netIf = NetworkInterface.getByName("bge0");
MulticastSocket s = new MulticastSocket(6789);
s.joinGroup(group, netIf);
byte[] msgBytes = msg.getBytes(StandardCharsets.UTF_8);
DatagramPacket hi = new DatagramPacket(msgBytes, msgBytes.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, netIf);
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(SocketAddress mcastaddr, NetworkInterface netIf) method. Multiple MulticastSockets may subscribe to a multicast group and port concurrently, and they will all receive group datagrams.
The DatagramSocket and MulticastSocket classes define convenience methods to set and get several socket options. Like DatagramSocket this class also supports the setOption and getOption methods to set and query socket options. In addition to the socket options supported by DatagramSocket , a MulticastSocket supports the following socket options:
Socket options
Option Name | Description |
IP_MULTICAST_IF | The network interface for Internet Protocol (IP) multicast datagrams |
IP_MULTICAST_TTL | The time-to-live for Internet Protocol (IP) multicast datagrams |
IP_MULTICAST_LOOP | Loopback for Internet Protocol (IP) multicast datagrams |
Additional (implementation specific) options may also be supported.
-
Since:
- 1.1
|
- All Implemented Interfaces:
-
Closeable , AutoCloseable
public class MulticastSocket
extends DatagramSocket
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 mcastaddr = InetAddress.getByName("228.5.6.7");
InetSocketAddress group = new InetSocketAddress(mcastaddr, port);
NetworkInterface netIf = NetworkInterface.getByName("bge0");
MulticastSocket s = new MulticastSocket(6789);
s.joinGroup(group, netIf);
byte[] msgBytes = msg.getBytes(StandardCharsets.UTF_8);
DatagramPacket hi = new DatagramPacket(msgBytes, msgBytes.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, netIf);
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(SocketAddress mcastaddr, NetworkInterface netIf) method. Multiple MulticastSockets may subscribe to a multicast group and port concurrently, and they will all receive group datagrams.
The DatagramSocket and MulticastSocket classes define convenience methods to set and get several socket options. Like DatagramSocket this class also supports the setOption and getOption methods to set and query socket options. In addition to the socket options supported by DatagramSocket , a MulticastSocket supports the following socket options:
Socket options
Option Name | Description |
IP_MULTICAST_IF | The network interface for Internet Protocol (IP) multicast datagrams |
IP_MULTICAST_TTL | The time-to-live for Internet Protocol (IP) multicast datagrams |
IP_MULTICAST_LOOP | Loopback for Internet Protocol (IP) multicast datagrams |
Additional (implementation specific) options may also be supported.
-
API Note:
-
DatagramChannel implements the MulticastChannel interface and provides an alternative API for sending and receiving multicast datagrams. The MulticastChannel API supports both any-source and source-specific multicast.
-
Since:
- 1.1
|
|