1.1.1.
¿Que es un socket multicast?
A
veces nos interesa que un ordenador pueda enviar un mensaje por red y que este
sea recibido por otros ordenadores simultáneamente. Para ello están las
direcciones multicast. Son direcciones en el rango 224.0.0.0 a 239.255.255.255.
La 224.0.0.0 está reservada y no puede usarse. Enviando mensajes por estas
direcciones, cualquier otro ordenador en la red que las escuche podría leer
dicho mensaje, independientemente de cual sea la IP real de ese ordenador. Es
decir, si un ordenador quiere enviar un mensaje simultáneamente a varios, puede
hacerlo enviando el mensaje a una de estas IPs, los demás ordenadores deben
estar a la escucha de dichas IPs para recibir el mensaje.
1.1.2.
Enviar un mensaje Multicast
public class MulticastServer {
public static void main(String[] args)
throws InterruptedException, IOException {
try {
MulticastSocket socket = new
MulticastSocket();
byte[] b = "Martin
Gigena".getBytes();
DatagramPacket dgram;
dgram = new DatagramPacket(b,
b.length,InetAddress.getByName("235.1.1.1"), 4000);
System.err.println("Enviando " + b.length + " bytes a
" +
dgram.getAddress() + ':' +
dgram.getPort());
while(true) {
System.err.print(".");
socket.send(dgram);
Thread.sleep(1000);
}
} catch (SocketException ex) {
Logger.getLogger(UDPServer.class.getName()).log(Level.SEVERE, null, ex);
}
catch (UnknownHostException ex) {
Logger.getLogger(UDPServer.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
1.1.3.
Leer un mensaje Multicast
public
class MulticastClient {
public static void main(String[] args)
throws IOException {
try {
byte[] b = new byte[100];
DatagramPacket dgram = new
DatagramPacket(b, b.length);
MulticastSocket socket = new
MulticastSocket(4000);
socket.joinGroup(InetAddress.getByName("235.1.1.1"));
while(true)
{
socket.receive(dgram); // Se
bloquea hasta que llegue un datagrama
System.err.println("Recivido
" + dgram.getLength() +
" bytes de " +
dgram.getAddress() + " "+ new String(dgram.getData()));
}
} catch (SocketException ex) {
Logger.getLogger(UDPServer.class.getName()).log(Level.SEVERE, null, ex);
}
catch (UnknownHostException ex) {
Logger.getLogger(UDPServer.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
10/10
ResponderEliminar