Paso de mensajes en Java

Documentos relacionados
Cliente/Servidor en Java

Desarrollo de Aplicaciones Distribuidas. Sockets. Daniel Avellaneda

EJEMPLOS PROGRAMACIÓN SOCKET - JAVA

Arquitecturas cliente/servidor

Universidad de Cantabria

Tema 3: COMUNICACIÓN ENTRE PROCESOS

Comunicación entre procesos: sockets udp. Jorge Iván Meza Martínez

Aplicaciones Cliente-Servidor Con Datagramas

Tema II. Sockets. Desarrollo de Aplicaciones para Internet Curso Miguel Reboiro Jato

Capítulo 5. Programación de aplicaciones de red

Sockets. Los sockets son un mecanismo de comunicación entre procesos que se utiliza en Internet.

Tema 5 Comunicación con sockets

1.- FUNDAMENTOS FUNCIONAMIENTO GENÉRICO JAVA SOCKETS Creación de Streams de Entrada...7

1 SOCKETS EN JAVA. Sistemas Distribuidos::Sockets en Java EUI-SG/INFOR.UVA.ES 1

Conexión TCP Servidor

UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: TUTORIAL DE SOCKETS EN JAVA

Sockets en Java. Prof. Wílmer Pereira Universidad Simón Bolívar

Multienhebrado en Java Un toque de sincronización Transporte en Java Ejemplo conjunto

Federico Peinado

Juan Pavón Mestras Dep. Sistemas Informáticos y Programación Universidad Complutense de Madrid.

EL LENGUAJE DE PROGRAMACIÓN JAVA TM

Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN

Direcciones IP y puertos

Sockets. Introducción. Las redes de computadoras permiten al usuario. Curso Propedéutico Maestría en Ciencias de la Computación BUAP

UNIVERSIDAD POLITÉCNICA DE PACHUCA SOCKETS EN JAVA

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA

Sockets. Sockets. 1 Introducción

Java: comunicación en Internet. Modem. Satelite UMTS W-LAN. Láser. Fibra óptica. Conceptos básicos

PROGRAMACION DISTRIBUIDA

LABORATORIO DE RC PRÁCTICA 2: IMPLEMENTACIÓN DE UN CLIENTE Y SERVIDOR DE

Procesamiento distribuido en Java

Práctica 2 Programación de Aplicaciones Distribuidas: Sockets TCP. Laboratorio de Comunicación de Datos ITT Telemática 26 de Septiembre 2011

Sistemas Distribuidos -Comunicación entre Procesos (IPC)

Sistemas Distribuidos. Sockets

Sistemas Distribuidos ITInformática (UVA) César Llamas Bello - Febrero 2003

Desarrollo de Aplicativos con winsockets

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA. Daniel Díaz Sánchez

Sockets en Java. La Creatividad proviene de un conflicto de ideas. Uso de Sockets

Tipos DataInputStream/DataOutputStream: L/E de datos de tipo simple y Cadenas (Strings) ObjectInputStream/ObjectOutputStream: para persistencia de obj

Programación para redes con Java

Entrada y Salida de datos

TELEPROCESO Y SISTEMAS DISTRIBUIDOS

Sistemas Operativos Distribuidos

TEMA 1. Introducción a las arquitecturas distribuidas

Justamente, una de las formas de crear un objeto de la clase URL permite especificar también el puerto:

PROTOCOLOS DE RED SMTP

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

CLASE SOCKET. 1. Crear un nuevo socket usando un constructor de la clase. 2. El socket trata de conectarse al host remoto.

El servicio de echo con sockets

Java RMI. Sistemas distribuidos

Programa Formativo. Código: Curso: Programación con JAVA 8 SE Standard Edition Modalidad: ONLINE Duración: 120h.

Introducción de Sockets en C.

Práctica 1 Programación de Aplicaciones Distribuidas: Sockets UDP. Laboratorio de Comunicación de Datos ITT Telemática Septiembre 2011

Nivel de Transporte en Internet

Posibles implementaciones

Sistemas operativos: una visión aplicada. Capítulo 10 Introducción a los sistemas distribuidos

Práctica 3: Introducción a los sockets en Java

Gines Hinojosa Marisol López López Marcela Pamela Pérez Cruz Juan Carlos Pérez Valencia Ubaldo

Laboratorio de Redes de Comunicaciones Programación con Sockets en Java

Examen Final de Redes - ETSIA - 1 de Junio de 2007

Tema 2. Comunicación entre procesos

MANUAL TÉCNICO DEL PROXY UTN

Transcripción:

Paso de mensajes en Java Grupo ARCOS Desarrollo de Aplicaciones Distribuidas Ingeniería Informática Universidad Carlos III de Madrid

Contenidos 1. Introducción: 1. Paradigma de paso de mensajes 2. Entorno de programación Java 2. Paso de mensajes en Java: sockets 1. Introducción a sockets 2. Sockets en Java 1. Datagrama 2. Orientado a conexión 3. Difusión (comunicación en grupo) 2

Contenidos 1. Introducción: 1. Paradigma de paso de mensajes 2. Entorno de programación Java 2. Paso de mensajes en Java: sockets 1. Introducción a sockets 2. Sockets en Java 1. Datagrama 2. Orientado a conexión 3. Difusión (comunicación en grupo) 3

Paradigma de paso de mensajes alto Espacio de objetos, aplicaciones colaborativas Servicios de red, object request broker, agentes móviles procedimientos remotos, métodos remotos Cliente-servidor, peer-to-peer Paso de mensajes bajo 4

Paradigma de paso de mensajes Paradigma fundamental para aplicaciones distribuidas Un proceso envía un mensaje de solicitud El mensaje llega al receptor, el cual procesa la solicitud y devuelve un mensaje en respuesta Esta respuesta puede originar posteriores solicitudes por parte del emisor Proceso A Proceso B m1 m2 Mensaje m3 Paso de mensajes 5

Paradigma de paso de mensajes Las operaciones básicas para soportar el paradigma de paso de mensajes son enviar y recibir Protocolos más comunes: IP y UDP Para las comunicaciones orientadas a conexión también se necesitan las operaciones conectar y desconectar Protocolo más común: TCP Operaciones de Entrada/Salida que encapsulan el detalle de la comunicación a nivel del sistema operativo Ejemplo: el API de sockets 6

Contenidos 1. Introducción: 1. Paradigma de paso de mensajes 2. Entorno de programación Java 2. Paso de mensajes en Java: sockets 1. Introducción a sockets 2. Sockets en Java 1. Datagrama 2. Orientado a conexión 3. Difusión (comunicación en grupo) 7

Java: programación Programación en Java. Independiente de la plataforma Programa Java compilador Código bytecode JVM Código máquina nativo Tipos de programas en Java. Aplicaciones. Applets. Servlets. 8

Java: tipos de programas Aplicación Computador Objeto Java JVM Applet applet Objeto Java JVM Servlet servlet Solicitud Respuesta Proceso 9

Java: características Java no tiene punteros Recolector de basura Java soporta programación multi-threading. Riesgo de condiciones de carrera regiones críticas. Java ofrece soporte para crear aplicaciones distribuidas Diversas bibliotecas para uso de protocolos de comunicación 10

Java: características 11

Empaquetamiento de datos Transformaciones necesarias para poder transmitir datos o estructuras entre distintos ordenadores Prueba" 1.2 7.3-1.5 Computador A marshalling 1. Aplanado de los campos de la estructura de datos 2. Conversión a la representación externa (de red) 110011... 10000100... Prueba" Computador B unmarshalling -1.5 7.3 1.2 1. Conversión de los datos a la representación interna 2. Reconstrucción de las estructuras de datos La conversión de la representación de interna a externa no es necesaria si - Ambos extremos son el mismo tipo de computador - Los dos extremos negocian una conexión. 12

Java: comunicación de datos y objetos Java soporta la serialización de objetos. Empaquetamiento y transmisión de objetos entre procesos. thefile = new File(args[0]); outstream = new FileOutputStream(theFile); objstream = new ObjectOutputStream(outStream);... objstream.writeint(3); objstream.writeobject(new Crouton(7)); objstream.writeobject(new Tomato("Mars", 11, 5))... int primitive = objstream.readint(); crunch = (Crouton) objstream.readobject(); Object tomato = objstream.readobject(); 13

Contenidos 1. Introducción: 1. Paradigma de paso de mensajes 2. Entorno de programación Java 2. Paso de mensajes en Java: sockets 1. Introducción a sockets 2. Sockets en Java 1. Datagrama 2. Orientado a conexión 3. Difusión (comunicación en grupo) 14

Sockets: introducción Aparecieron en 1981 en UNIX BSD 4.2 Intento de incluir TCP/IP en UNIX Diseño independiente del protocolo de comunicación Abstracción que: Se representa un extremo de una comunicación bidireccional con una dirección asociada En el caso de sockets basados en TCP/UDP se tiene una dirección IP y un puerto Ofrece interfaz de acceso a los servicios de red en el nivel de transporte Protocolo TCP Protocolo UDP Otros 15

Sockets: introducción Sujetos a proceso de estandarización dentro de POSIX POSIX 1003.1g Actualmente: Disponibles en casi todos los sistemas UNIX Disponibles en otros sistemas operativos WinSock: API de sockets de Windows Accesible desde muchos lenguajes En Java como clase nativa 16

Tipos de sockets Datagrama sin conexión Sin conexión. No fiable, no se asegura el orden en la entrega. Mantiene la separación entre mensajes. Asociado al protocolo UDP. Datagrama con conexión Orientado a conexión (no a nivel de red, sino nivel lógico). Fiable, se asegura el orden de entrega de mensajes. No mantiene separación entre mensajes. Asociado al protocolo UDP. Sockets STREAM Concepto de flujo de datos. Asociado al protocolo TCP. 17

Uso de sockets datagram Proceso 1 Proceso 2 Socket() Obtener streams sendto() Petición receivefrom() receivefrom() Respuesta sendto() close() close() 18

Uso de sockets stream Proceso 2 Proceso 1 socket socket listen connect Conexión accept write read Petición Respuesta read write close close 19

Contenidos 1. Introducción: 1. Paradigma de paso de mensajes 2. Entorno de programación Java 2. Paso de mensajes en Java: sockets 1. Introducción a sockets 2. Sockets en Java 1. Datagrama 2. Orientado a conexión 3. Difusión (comunicación en grupo) 20

Sockets de Java El paquete java.net de Java permite crear y gestionar sockets TCP/IP. Clases para sockets datagrama: DatagramSocket DatagramPacket Clases para sockets stream: ServerSocket Socket 21

Sockets datagrama DatagramPacket: implementa un objeto que permite enviar o recibir paquetes. Constructor: DatagramPacket. Métodos: getaddres, getport,... DatagramSocket: implementa un socket que se puede utilizar para enviar o recibir datagramas. Constructor: DatagramSocket. Métodos: send, receive, close, setsotimetout, getsotimeout,... 22

Sockets datagrama Referencia a objeto Flujo de datos Proceso emisor Vector de bytes Proceso receptor Vector de bytes Dirección del receptor Objeto DatagramPacket Objeto DatagramPacket send Objeto DatagramSocket receive Objeto DatagramSocket 23

Sockets datagrama // Ejemplo para un emisor InetAddress receiverhost= InetAddress.getByName("localHost"); DatagramSocket thesocket = new DatagramSocket( ); String message = "Hello world!"; byte[ ] data = message.getbytes( ); DatagramPacket thepacket = new DatagramPacket(data, data.length, receiverhost, 2345); thesocket.send(thepacket ); //Ejemplo para un receptor DatagramSocket ds = new DatagramSocket (2345); DatagramPacket dp = new DatagramPacket(buffer, MAXLEN ); ds.receive(dp); len = dp.getlength ( ); System.out.Println (len + " bytes received.\ n"); String s = new String( dp.getdata( ), 0, len); System.out.println (dp.getaddress ( ) + " at port " + dp.getport( ) + " says " + s); 24

Ejemplo (datagramas) Máquina A cliente NÚCLEO sumar(5,2) Restulado resultado = 7= 7 Máquina B servidor 5+2 NÚCLEO RED 25

Emisor (datagramas) import java.lang.* ; import java.io.* ; import java.net.* ; import java.util.* ; public class client{ public static void main ( String [] args) { byte bsend[] = new byte[100]; byte brecv[] = new byte[100]; InetAddress server_addr = null; DatagramSocket s = null; DatagramPacket in = null; DatagramPacket out = null; int res; int num[] = new int[2]; if (args.length!= 1) { System.out.println("Uso: cliente <host>"); System.exit(0); } 26

Emisor (datagramas) try { // se crea el socket del cliente s = new DatagramSocket(); // direción del servidor server_addr = InetAddress.getByName(args[0]); // Excerpt from the sending process InetAddress receiverhost = InetAddress.getByName ("localhost "); DatagramSocket thesocket = new DatagramSocket ( ); String message = "Hello world!"; byte[ ] data = message.getbytes ( ); DatagramPacket thepacket = new DatagramPacket (data, data.length, receiverhost, 2345); thesocket.send (thepacket ); num[0] = 2; num[1] = 5; // empaquetar los datos. ByteArrayOutputStream baos = new ByteArrayOutputStream() ; ObjectOutputStream dos = new ObjectOutputStream(baos); dos.writeobject(num); bsend = baos.tobytearray() ; // se obtiene el buffer (datagrama) // un único envio out = new DatagramPacket(bsend, bsend.length, server_addr, 2500); s.send(out); 27

Emisor (datagramas) // se recibe el datagrama de respuesta in = new DatagramPacket(brecv, 100); s.receive(in); //Excerpt from a receiver program DatagramSocket ds = new DatagramSocket(2345); DatagramPacket dp = new DatagramPacket(buffer, MAXLEN ); ds.receive(dp); len = dp.getlength ( ); System.out.Println(len + " bytes received.\n"); String s = new String( dp.getdata( ), 0, len); System.out.println (dp.getaddress ( ) + " at port " + dp.getport( ) + " says " + s); // se obtiene el buffer brecv = in.getdata(); // se desempaqueta ByteArrayInputStream bais = new ByteArrayInputStream(brecv) ; DataInputStream dis = new DataInputStream(bais); } } res = dis.readint(); System.out.println("Datos recibidos " + res); } catch (Exception e) { System.err.println("<<<<<excepcion " + e.tostring() ); e.printstacktrace() ; } 28

Receptor (datagramas) import java.lang.* ; import java.io.* ; import java.net.* ; import java.util.* ; public class servidor { public static void main ( String [] args) { DatagramSocket s = null; DatagramPacket in, out; InetAddress client_addr = null; int client_port; byte brecv[] = new byte[100]; byte bsend[] = new byte[100]; int num[], res; try { s = new DatagramSocket(2500); in = new DatagramPacket(brecv, 100); // paquete para recibir la // solicitud 29

Receptor (datagramas) while (true) { s.receive(in); //esperamos a recibir //Excerpt from a receiver program DatagramSocket ds = new DatagramSocket(2345); DatagramPacket dp = new DatagramPacket(buffer, MAXLEN ); ds.receive(dp); len = dp.getlength ( ); System.out.Println(len + " bytes received.\n"); String s = new String( dp.getdata( ), 0, len); System.out.println (dp.getaddress ( ) + " at port " + dp.getport( ) + " says " + s); brecv = in.getdata(); // obtener datos client_addr = in.getaddress(); client_port = in.getport(); // desempaquetar los datos. ByteArrayInputStream bais = new ByteArrayInputStream(brecv); ObjectInputStream dis = new ObjectInputStream(bais); num = (int[])dis.readobject(); res = num[0] + num[1]; 30

Receptor (datagramas) ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); dos.writeint(res); // Excerpt from the sending process InetAddress receiverhost = InetAddress.getByName ("localhost "); DatagramSocket thesocket = new DatagramSocket ( ); String message = "Hello world!"; byte[ ] data = message.getbytes ( ); DatagramPacket thepacket = new DatagramPacket (data, data.length, receiverhost, 2345); thesocket.send (thepacket ); bsend = baos.tobytearray(); out = new DatagramPacket(bsend, bsend.length, client_addr, client_port); s.send(out); } } catch(exception e) { System.err.println("excepcion " + e.tostring() ); e.printstacktrace() ; } } } 31

Contenidos 1. Introducción: 1. Paradigma de paso de mensajes 2. Entorno de programación Java 2. Paso de mensajes en Java: sockets 1. Introducción a sockets 2. Sockets en Java 1. Datagrama 2. Orientado a conexión 3. Difusión (comunicación en grupo) 32

Sockets stream La clase socket implementa un socket stream Socket(InetAddress dirección, int puerto) OutputStream getoutputstream() flush, InputStream getinputstream() Void setsotimeout(int tiempo_de_espera) La clase ServerSocket implementa un socket a utilizar en los servidores para esperar la conexiones de los clientes Socket accept() Void close() Void setsotimeout(int tiempo_de_espera) 33

Esqueleto con sockets streams de Java Receptor Emisor ServerSocket(puerto); socket(host, puerto) accept(); OutputStream InputStream InputStream OutputStream close() close() 34

Esqueleto con sockets streams de Java Proceso receptor ServerSocket() Proceso emisor Socket() Abrir conexión Accept() Crear Thread Obtener streams Accept() Obtener streams write() Petición read() read() Respuesta write() close() close() 35

Ejemplo (streams) Máquina A cliente NÚCLEO sumar(5,2) resultado = 7 Restulado = 7 Máquina B servidor 5+2 NÚCLEO RED 36

Emisor (streams) import java.lang.* ; import java.io.* ; import java.net.* ; import java.util.* ; public class client { public static void main ( String [] args) { int res; int num[] = new int[2]; if (args.length!= 1) { System.out.println("Uso: cliente <host>"); System.exit(0); } try { // se crea la conexión String host = args[0]; Socket sc = new Socket(host, 2500); // conexión 37

Emisor(streams) OutputStream ostream = sc.getoutputstream(); ObjectOutput s = new ObjectOutputStream(ostream); num[0] = 5; num[1] = 2; //prepara la petición s.writeobject(num); s.flush(); DataInputStream istream = new DataInputStream(sc.getInputStream()); res = istream.readint(); } } sc.close(); System.out.println("La suma es " + res); } catch (Exception e){ System.err.println("excepcion " + e.tostring() ); e.printstacktrace() ; } 38

Receptor (streams) import java.lang.* ; import java.io.* ; import java.net.* ; import java.util.* ; public class servidor { public static void main ( String [] args) { ServerSocket serveraddr = null; Socket sc = null; int num[] ; // petición int res; try { serveraddr = new ServerSocket(2500); } catch (Exception e){ System.err.println("Error creando socket"); } 39

Receptor (streams) while (true) { try { sc = serveraddr.accept(); // esperando conexión InputStream istream = sc.getinputstream(); ObjectInput in = new ObjectInputStream(istream); num = (int[]) in.readobject(); res = num[0] + num[1]; DataOutputStream ostream = new DataOutputStream(sc.getOutputStream()); ostream.writeint(res); ostream.flush(); sc.close(); } catch(exception e) { System.err.println("excepcion " + e.tostring() ); e.printstacktrace() ; } } // while } // main } // servidor 40

Contenidos 1. Introducción: 1. Paradigma de paso de mensajes 2. Entorno de programación Java 2. Paso de mensajes en Java: sockets 1. Introducción a sockets 2. Sockets en Java 1. Datagrama 2. Orientado a conexión 3. Difusión (comunicación en grupo) 41

Comunicación en grupo IPC en grupo o multidifusión. Demanda: Aplicaciones. Aumento de la robustez del sistema. emisor receptor IPC uno-a-uno IPC grupo o multidifusión 42

Comunicación en grupo Operaciones primitivas: Incorporación Abandono Envío Recepción Multidifusión: Sin conexión: baja latencia. Audio/vídeo en tiempo real. Orientada a conexión: alta latencia. Multidifusión de datos. 43

Tipos de sistemas de multidifusión No fiable Fiable Sin orden FIFO Los mensajes no tienen orden entre procesos, y los de un mismo proceso Se mantiene el orden de los mensajes de un mismo proceso (distintos entrelazados) Orden casual Relación sucede-antes/casual entre todos los mensajes Orden atómico Relación sucede-antes/casual entre ciertos mensajes 44

Ejemplos de los distintos tipos de sistemas de multidifusión Sin orden Se emiten m 1, m 2, m 3 FIFO m 1 -m 2 -m 3, m 1 -m 3 -m 2, m 2 -m 1 -m 3, m 2 -m 3 -m 1, m 3 -m 1 -m 2, m 3 -m 2 -m 1 A emite A 1 -A 2 y B emite B 1 -B 2 A 1 -A 2 -B 1 -B 2, A 1 -B 1 -A 2 -B 2, A 1 -B 1 -B 2 -A 2, B 1 -A 1 -A 2 -B 2 B 1 -A 1 -B 2 -A 2 B 1 -B 2 -A 1 -A 2. Orden casual A emite A 1, B emite B 1, A emite -A 2 y B emite B 2 A 1 -A 2 -B 1 -B 2, 45

Ejemplos de los distintos tipos de sistemas de multidifusión Orden atómico: Ejemplo 1: P 1 envía m 1, P 2 envía m 2, y P 3 envía m 3. m 1 -m 2 - m 3, m 1 - m 3 - m 2, m 2 - m 1 -m 3, m 2 -m 3 -m 1, m 3 -m 1 - m 2, m 3 -m 2 -m 1. Ejemplo 2: P 1 envía m 1 y luego m 2. P 2 responde a m 1 enviando m 3. P 3 responde a m 3 enviando m 4 Orden a respetar: m 1 - m 3 - m 4 m 1- m 2- m 3- m 4, m 1- m 3- m 2- m 4, m 1- m 3- m 4- m 2. 46

Multidifusión en Java Extensión del protocolo UDP. Multidifusión no fiable. Ofrece clases próximas a las APIs de sockets: InetAddress: identifica grupo de multidifusión. DatagramPacket: paquete de datos enviado a todos los participantes y paquete de datos recibido por cada participante. MulticastSocket: permite gestionar sockets multidifusión. Dirección IP de multidifusión: Direcciones de multidifusión del protocolo de internet. Dirección IP de clase D: 224.0.0.0 a 239.255.255.255. Número de puerto UDP. 47

Direcciones de multidifusión asignadas 224.0.0.1 All Systems on this Subnet 224.0.0.11 Mobile-Agents 224.0.1.23 XINGTV 224.0.1.84 jini-announcement 224.0.1.85 jini-request 224.0.1.115 Simple Multicast 224.0.6.000-224.0.6.127 Cornell ISIS Project 224.0.7.000-224.0.7.255 Where-Are-You 224.0.8.000-224.0.8.255 INTV 224.0.9.000-224.0.9.255 Invisible Worlds 2240.12.000-224.0.12.063 Microsoft and MSNBC 224.0.18.000-224.0.18.255 Dow Jones 224.0.19.000-224.0.19.063 Walt Disney Company 224.0.22.000-224.0.22.255 WORLD MCAST 224.2.0.0-224.2.127.253 Multimedia Conference Calls 48

Multidifusión en Java Incorporación a un grupo de multidifusión // Unirse a la dirección 239.1.2.3 puerto 3456 InetAddress group = InetAddress.getByName("239.1.2.3") MulticastSocket s = new MulticastSocket(3456) s.joingroup(group); Envío a un grupo de multidifusión String msg = Mensaje de difusión."; InetAddress group = InetAddress.getByName("239.1.2.3"); MulticastSocket s = new MulticastSocket(3456); s.joingroup(group); // opcional DatagramPacket hi = new DatagramPacket(msg.getBytes(), msg.length(),group, 3456); s.send(hi); 49

Multidifusión en Java Recepción de mensajes enviados byte[] buf = new byte[1000]; InetAddress group =InetAddress.getByName("239.1.2.3"); MulticastSocket s = new MulticastSocket(3456); s.joingroup(group); DatagramPacket recv = new DatagramPacket(buf, buf.length); s.receive(recv); Abandono de un grupo de multidifusión s.leavegroup(group); 50

Multidifusión en Java Tiempo de vida Objetivo: evitar que los mensajes circulen indefinidamente. Número de enlaces a través de los que se retransmite el paquete. String msg = Hola!"; InetAddress group = InetAddress.getByName("224.0.0.1"); MulticastSocket s = new MulticastSocket(3456); s.settimetolive(1); // multidifusión en máquinas locales DatagramPacket hi = new DatagramPacket(msg.getBytes(), msg.length(),group, 3456); s.send(hi); 51

Multidifusión en Java Valores del tiempo de vida: 0 <= tiempo_de_vida <= 255 0 1 0 misma máquina 32 64 misma red local misma zona misma región 128 mismo continente 255 no está restringida 52

Multidifusión en Java Interfaces de multidifusión fiable: The Java Reliable Multicast Service (JRM Service). Sistema Totem de la Universidad de California. TASC s Reliable Multicast Framework (RMF) Multidifusión FIFO. 53

Paso de mensajes en Java Grupo ARCOS Desarrollo de Aplicaciones Distribuidas Ingeniería Informática Universidad Carlos III de Madrid