package ar.com.javacuriosities.networking.udp.multicast; import java.io.IOException; import java.net.DatagramPacket; import java.net.InetAddress; import java.net.MulticastSocket; /* * Existen un rango de IP que son las pertenecientes a las IP clase D, estas se encuentran * en el rango 224.0.0.0 - 239.255.255.255. * Si el emisor envía un datagrama a esta dirección, se harán multiples copias para todos los interesados */ public class MulticastReceiver { public static void main(String[] args) { MulticastSocket multicastSocket = null; InetAddress group1 = null; InetAddress group2 = null; try { // Creamos un socket multicast en el puerto 10000: multicastSocket = new MulticastSocket(10000); // Configuramos el grupo (IP) a la que nos conectaremos: group1 = InetAddress.getByName("231.0.0.1"); group2 = InetAddress.getByName("231.0.0.2"); // Nos unimos al grupo: (No podemos unirnos dos veces al mismo // grupo) multicastSocket.joinGroup(group1); multicastSocket.joinGroup(group2); while (true) { // Recibimos el paquete del socket: byte[] buffer = new byte[100]; DatagramPacket datagramPacket = new DatagramPacket(buffer, buffer.length); multicastSocket.receive(datagramPacket); System.out.println(new String(datagramPacket.getData())); System.out.println("Port: " + datagramPacket.getPort()); } } catch (IOException e) { // Log and Handle exception e.printStackTrace(); } finally { // Salimos de los grupo multicast try { multicastSocket.leaveGroup(group1); multicastSocket.leaveGroup(group2); } catch (IOException e) { // Log and Handle exception e.printStackTrace(); } // Cerramos el socket: multicastSocket.close(); } } }