Aplicaciones Cliente-Servidor Con Datagramas

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

Universidad de Cantabria

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

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

Federico Peinado

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

EJEMPLOS PROGRAMACIÓN SOCKET - JAVA

Posibles implementaciones

Direcciones IP y puertos

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

Arquitecturas cliente/servidor

Desarrollo de Aplicaciones Distribuidas. Sockets. Daniel Avellaneda

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

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

Clases Java para comunicaciones en red

Conexión TCP Servidor

Diseño y Evaluación de Configuraciones. Componentes software para cargar el sistema

Multitarea en Java. Rafa Caballero - UCM

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

Tema 14: Excepciones

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

Las clases Java Socket y ServerSocket

PROGRAMACION DISTRIBUIDA

Programa Java. El lenguaje de programación Java. Comentarios. Programa Java. Palabras reservadas. Identificadores

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

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

MANUAL TÉCNICO DEL PROXY UTN

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

Depto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación Fundamentos de Programación 15 de diciembre de 2011

Programación Avanzada. Juan Manuel Fernández. Curso 2011 Ejemplo de uso de sockets desde aplicaciones visuales. Usan un hilo en banco.

Red LSUB. 4 de marzo de 2015 GSYC

Tema 3: COMUNICACIÓN ENTRE PROCESOS

Ficheros y streams. Desde el punto de vista de Java, cada fichero no es más que una secuencia o flujo de bytes [stream].

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

Programación para redes con Java

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

EL LENGUAJE DE PROGRAMACIÓN JAVA TM

Práctica 5: Servidor web concurrente en Java

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

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Tema 7. Programacion en red.

Introducción a Java LSUB. 30 de enero de 2013 GSYC

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

Cliente/Servidor en Java

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Gestores de seguridad en Java

PROGRAMACION DISTRIBUIDA

Modulo conexión Cliente WS DGI

PROGRAMACION DISTRIBUIDA

Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar

MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar

Sockets. Sockets. 1 Introducción

Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU

James Gosling, creador de Java

Examen de Redes - ETSIA 9 de septiembre - Primer Parcial

Universidad Autónoma de Baja California Facultad de Ingeniería Apuntes de Programación Orientada a Objetos I

1º parcial de Redes - ETSIA - 30 de enero de 2007

UNIVERSIDAD POLITÉCNICA DE PACHUCA SOCKETS EN JAVA

COMU ICACIO ES E U IX CO JAVA

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

Programando en Java Raspberry Pi (RPi) 2015/05/08 Juan V. Capella

Elementos léxicos del lenguaje de programación Java

Consumo de ActiveMQ en Pre

Para esto, he desarrollado una aplicación en Visual Studio con tres proyectos, como se presenta en la siguiente ilustración:

Diseño Y Aplicaciones de Sistemas Distribuidos. Servlets. Joan Vila

Universidad de Cantabria

CORBA desde Java. Diego Sevilla Ruiz Sistemas Distribuidos. 1. Introducción

BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN

Ingeniería del Software Separación entre Presentación y Lógica del Negocio

Programación concurrente en Java. Breve introducción. Miguel Ángel LATRE Dept. de Informática e Ingeniería de Sistemas

Programación Orientada a Objetos con Java

Bibliografía (Java) Java: Introducción a Java

Paso de mensajes en Java

Serialización de Objetos en Java. Dra. Maricela Bravo

PROGRAMACION CONCURRENTE

2) Cual modificador limita el acceso a un método de una clase pública a los miembros de la misma clase?

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Construcciones del Lenguaje Java

2. Estructura de un programa en Java

Por el contrario System.in es un byte Stream sin caracteristicas de character Stream.

Programación Orientada a Objetos. Java: Excepciones

OpenSAMLPerl. Descripción Y Guía de Usuario. Daniel García Franco 17 de enero de Estructura de OpenSAMLPerl 2

TEMA 5: Control de la Concurrencia en Java (API Estándar)

Soluciones Ejercicios Tema 3

Programación Concurrente. Curso Java 2012, 2013 Juan Manuel Fernández Peña

Tutorial Web Dinámica con Servlets y JSP Sesion 3

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA

Sockets en C# Bueno, por ultimo apuntar que trabajaremos en modo consola, que aprticularmente me gusta más.

Comunicacion en Java. Alejandro Escobar

Práctica #1 Patrón de diseño Singleton

Programación Orientada a Objetos II. La Plataforma JDBC

en otra máquina exactamente de la misma manera que si se encontrará en la misma máquina

1. Visión general de RMI

11. Algunas clases estándar de Java (II)

Programación Orientada a Objetos. Java: Excepciones

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Entrada y Salida de datos

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Especificaciones del driver JDBC

EXAMEN PROGRAMACIÓN 21 de Septiembre de 2007 INGENIERÍA INFORMÁTICA Primera parte: Cuestiones 1,5 horas

Transcripción:

Aplicaciones Cliente-Servidor Con Datagramas

User Datagram Protocol (UDP) UDP es un protocolo que no garantiza la comunicación entre dos aplicaciones. No está basado en conexión. Envía paquetes de datos independientes conocidos como datagramas. Análogo a enviar una carta por correo. Puerto # Datos Datagrama (paquete UDP) Cecilia M. Curlango Rosas 2/21

Qué es un datagrama? Un datagrama es un mensaje independiente y auto contenido que se envía por la red y cuyo arribo, tiempo de arribo y contenido no se garantizan. Una aplicación envía y recibe DatagramPacket a través de un DatagramSocket para implementar la comunicación utilizando UDP. Se pueden enviar paquetes a varios clientes que están escuchando en un MulticastSocket. Cecilia Curlango Rosas 3/21

DatagramPacket Cecilia Curlango Rosas 4/21

DatagramSocket Cecilia Curlango Rosas 5/21

Qué hacen los métodos? getsotimeout() y setsotimeout() send() y receive() Cecilia Curlango Rosas 6/21

Ejemplo Cliente-Servidor QuoteServer Red QuoteClient QuoteServerThread Cecilia Curlango Rosas 7/21

Clase QuoteServer public class QuoteServer { public static void main(string[] args) throws IOException { new QuoteServerThread().start(); Cecilia Curlango Rosas 8/21

Clase QuoteServerThread public class QuoteServerThread extends Thread { protected DatagramSocket socket = null; protected BufferedReader in = null; protected boolean morequotes = true; public QuoteServerThread() throws IOException { this("quoteserver"); public QuoteServerThread(String name) throws IOException { super(name); socket = new DatagramSocket(4445); try { in = new BufferedReader( new FileReader("one-liners.txt")); catch (FileNotFoundException e) System.err.println("Couldn't open quote file. " + "Serving time instead."); Cecilia Curlango Rosas 9/21

Clase QuoteServerThread public void run() { while (morequotes) { try { byte[] buf = new byte[256]; // receive request DatagramPacket packet = new DatagramPacket(buf, buf.length); socket.receive(packet); // figure out response String dstring = null; if (in == null) dstring = new Date().toString(); else dstring = getnextquote(); buf = dstring.getbytes(); // send the response to the client at "address" and "port" InetAddress address = packet.getaddress(); int port = packet.getport(); packet = new DatagramPacket(buf, buf.length, address, port); socket.send(packet); catch (IOException e) { e.printstacktrace(); morequotes = false; socket.close(); Cecilia Curlango Rosas 10/21

Clase QuoteServerThread protected String getnextquote() { String returnvalue = null; try { if ((returnvalue = in.readline()) == null) { in.close(); morequotes = false; returnvalue = "No more quotes. Goodbye."; catch (IOException e) { returnvalue = "IOException occurred in server."; return returnvalue; Cecilia Curlango Rosas 11/21

Clase QuoteClient public class QuoteClient { public static void main(string[] args) throws IOException { if (args.length!= 1) { System.out.println("Usage: java QuoteClient <hostname>"); return; // get a datagram socket DatagramSocket socket = new DatagramSocket(); // send request byte[] buf = new byte[256]; InetAddress address = InetAddress.getByName(args[0]); DatagramPacket packet = new DatagramPacket(buf, buf.length, address, 4445); socket.send(packet); // get response packet = new DatagramPacket(buf, buf.length); socket.receive(packet); // display response String received = new String(packet.getData(), 0, packet.getlength()); System.out.println("Quote of the Moment: " + received); socket.close(); Cecilia Curlango Rosas 12/21

Transmisión a múltiples receptores Cecilia Curlango Rosas 13/21

MulticastSocket Esta clase sirve para enviar y recibir paquetes IP multicast. Un MulticastSocket es un DatagramSocket con capacidad adicional para unirse a grupos de otros hosts en la Internet. Un grupo multicast se especifica con una dirección IP clase D y un número de puerto UDP. Las direcciones IP de clase D están en el rango de 224.0.0.0 a 239.255.255.255. Pero, la dirección 224.0.0.0 está reservada y no debe usarse. Cecilia Curlango Rosas 14/21

MulticastSocket Cecilia Curlango Rosas 15/21

Ejemplo Transmisión a múltiples receptores MulticastServer Red MulticastClient QuoteServerThread MulticastServerThread Cecilia Curlango Rosas 16/21

MulticastServer public class MulticastServer { public static void main(string[] args) throws java.io.ioexception { new MulticastServerThread().start(); Cecilia Curlango Rosas 17/21

public class MulticastServerThread extends QuoteServerThread { private long FIVE_SECONDS = 5000; public MulticastServerThread() throws IOException { super("multicastserverthread"); public void run() { while (morequotes) { try { byte[] buf = new byte[256]; // construct quote String dstring = null; if (in == null) dstring = new Date().toString(); else dstring = getnextquote(); buf = dstring.getbytes(); // send it InetAddress group = InetAddress.getByName("230.0.0.1"); DatagramPacket packet = new DatagramPacket(buf, buf.length, group, 4446); socket.send(packet); // sleep for a while try { sleep((long)(math.random() * FIVE_SECONDS)); catch (InterruptedException e) { catch (IOException e) { e.printstacktrace(); morequotes = false; socket.close(); 18/21

MulticastClient public class MulticastClient { public static void main(string[] args) throws IOException { MulticastSocket socket = new MulticastSocket(4446); InetAddress address = InetAddress.getByName("230.0.0.1"); socket.joingroup(address); DatagramPacket packet; // get a few quotes for (int i = 0; i < 5; i++) { byte[] buf = new byte[256]; packet = new DatagramPacket(buf, buf.length); socket.receive(packet); String received = new String(packet.getData(), 0, packet.getlength()); System.out.println("Quote of the Moment: " + received); socket.leavegroup(address); socket.close(); Cecilia Curlango Rosas 19/21

Ejercicio 1.Modifique el servidor del primer ejemplo para que muestre en su consola un mensaje identificando a cada cliente del que recibe una petición. Deberá mostrar para cada uno la dirección y el puerto del que recibió la petición así como el mensaje Recibí petición de:. 2.Modifique el servidor del segundo ejemplo para que muestre también en consola el mensaje que está transmitiendo a los suscriptores. Cecilia Curlango Rosas 20/21

Referencias Clase DatagramPacket - http://download.oracle.com/javase/7/docs/api/java/net/datagrampacket.html Clase DatagramSocket - http://download.oracle.com/javase/7/docs/api/java/net/datagramsocket.html Tutorial de datagramas - http://download.oracle.com/javase/tutorial/networking/datagrams/index.html Clase MulticastSocket - http://download.oracle.com/javase/7/docs/api/java/net/multicastsocket.html Cecilia Curlango Rosas 21/21