Sockets UDP Multipunto bajo Java

Anuncio
Redes
Sockets UDP Multipunto bajo Java
Redes-Sockets
1
Sockets UDP multipunto
„
„
„
„
Clase
MulticastSocket
(subclase
de
DatagramSocket)
Para enviar mensajes multicast. Un mensaje
multicast se envía a todos los miembros del
grupo multicast.
Un grupo multicast se especifica mediante
una dirección de clase D (multicast) y un
puerto.
Direcciones de clase D: de 224.0.0.0 a
239.255.255.255 (224.0.0.0 esta reservada).
Redes-Sockets
2
MulticastSocket
„
„
„
„
Para unirse a un grupo multicast se debe crear
primero un socket de tipo MulticastSocket en el
puerto deseado e invocar después al método:
joinGroup.
Cuando un proceso envía un mensaje a un grupo
multicast, recibirán el mensaje todos los procesos
suscritos al grupo.
Para recibir mensajes multicast es necesario
pertenecer a un grupo, sin embargo, esto no es
necesario para enviar mensajes al grupo.
Un proceso puede abandonar el grupo mediante el
método leaveGroup.
Redes-Sockets
3
MulticastSocket:constructores
„
„
„
MulticastSocket() Æ Crea un socket
multicast
MulticastSocket(int puerto)Æ Crea un
socket multicast en el puerto
especificado
Excepciones: IOException y
SecurityException
Redes-Sockets
4
MulticastSocket: métodos
„
„
void joinGroup(InetAddress dirMcast)Æ Se
une a un grupo multicast.
Void leaveGroup(InetAddress dirMcast)Æ
Abandona un grupo multicast.
„
void
send(DatagramPacket p,byte ttl)Æ Envia un
datagrama al destino con el TTL que se
especifique (generalmente TTL=1)
Redes-Sockets
5
MulticastSocket: Ejemplo
„
„
Cada instancia crea un MulticastSocket
asociado a la dirección 228.0.0.1 en el puerto
6789 para formar un grupo multicast.
Inicialmente, un proceso envía el mensaje
que recibe como parámetro (args[0]) y
después espera la recepción de los mensajes
multicast hasta que algún proceso envíe la
palabra FIN.
Redes-Sockets
6
MulticastSocket: Ejemplo
import java.net.*;
import java.io.*;
// Se queda a la espera de mensajes al grupo,
hasta recibir "Adios"
while (true) {
………….
………….
public class MiembroMulticast {
public static void main(String args[]) {
// args[0] es el mensaje enviado al grupo y args[1] es la
direccion del grupo
try {
InetAddress grupo = InetAddress.getByName(args[1]);
MulticastSocket socket = new MulticastSocket(6789);
System.out.println("Recibido:" + linea);
if (linea.equals("Adios")) break;
}
// Se une al grupo
socket.joinGroup(grupo);
// Envia el mensaje
byte[] m = args[0].getBytes();
……………………………
byte[] bufer = new byte[1000];
String linea;
}
}
// Si recibe "Adios" abandona el grupo
socket.leaveGroup(grupo);
} catch (SocketException e) {
System.out.println("Socket:" + e.getMessage());
} catch (IOException e) {
System.out.println("IO:" + e.getMessage());
}
Redes-Sockets
7
Descargar