Networking

18
Networking Networking Ing. Rolando Steep Quezada Martínez Ing. Rolando Steep Quezada Martínez [email protected] [email protected] Programación Avanzada en Java Programación Avanzada en Java

Transcript of Networking

Page 1: Networking

NetworkingNetworking

Ing. Rolando Steep Quezada MartínezIng. Rolando Steep Quezada Martínez

[email protected]@upnorte.edu.pe

Programación Avanzada en JavaProgramación Avanzada en Java

Page 2: Networking

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 16-16-22

Comunicación entre procesosComunicación entre procesos

• El desarrollo de aplicaciones concurrentes involucra el uso de mecanismos de comunicación. Estos mecanismos, conocidos genéricamente como mecanismos de comunicación entre procesos (IPC) permiten que los distintos procesos que conforman una aplicación "hablen entre sí".

• Los procesos en los que se descompone una aplicación pueden ejecutarse en un mismo ordenador (siempre que tengamos un sistema operativo multitarea) o en máquinas diferentes. En este último caso, la comunicación entre procesos involucra el uso de redes de ordenadores.

Page 3: Networking

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 16-16-44

Comunicaciones y multitareaComunicaciones y multitarea

• La razón principal de utilizar un hilo es invocar asincrónicamente a un método que realiza una determinada tarea.

• La tarea puede abarcar desde un único método hasta una sesión completa.

• Los diseños basados en tareas se encuentran en entornos orientados a eventos, computación en paralelo y en sistemas que hacen un fuerte uso de entrada y salida.

Page 4: Networking

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 16-16-55

SocketsSockets

• Un socket (literalmente, “enchufe”) es un extremo de una comunicación en Internet, por lo que se identifica con una dirección IP (un número entero de 32 bits) y un puerto (un número entero de 16 bits).

• Java encapsula el concepto de dirección IP con la clase java.net.InetAddress

• Los sockets direccionan procesos mediante:– Dirección IP o nombre DNS– Número de puerto (entre 1 y 65535)

Page 5: Networking

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 16-16-66

Esquema de comunicaciones basadas Esquema de comunicaciones basadas en socketsen sockets

Page 6: Networking

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 16-16-77

La clase InetAddressLa clase InetAddress

• Definida en el paquete java.net

• Un objeto InetAddress permite obtener:– Dirección o direcciones IP de una máquina.– Nombre o nombres de dominio de una máquina.

• Indica las conexiones entre un cliente y un servidor

• Excepciones a capturar:– UnknownHostException

Page 7: Networking

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 16-16-88

Sockets Stream (TCP, Transport Control Sockets Stream (TCP, Transport Control Protocol)Protocol)

• Orientado a la conexión– Flujos de bytes (Streams) que incorporan control de

errores y control del flujo – Comunicación uno a uno

• Las clases Socket y ServerSocket permiten utiliza el protocolo TCP en Java:

– Un Socket se utiliza para transmitir y recibir datos.– Un ServerSocket nunca se utiliza para transmitir datos.

Su único cometido es, en el servidor, esperar a que un cliente quiera establecer una conexión con el servidor.

Page 8: Networking

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 16-16-99

Una aplicación sencilla con Una aplicación sencilla con sockets TCPsockets TCP

Dinámica:

• El servidor se instala en el puerto 9999 TCP y se queda esperando peticiones en la llamada al método accept().

• Cuando se acepta la petición, a través del InputStream asociado al socket se lee una línea de texto enviada por el cliente.

• Esa misma línea de texto se le envía al cliente a través del OutputStream asociado al socket.

• Después, se cierra la conexión con el cliente y el servidor se vuelve a quedar esperando la llegada de nuevas solicitudes de eco.

• El servidor seguirá ejecutándose hasta que reciba una petición de un cliente que solicite el eco de “BYE”.

Page 9: Networking

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 16-16-1212

Sockets Datagrama (UDP, User Datagram Sockets Datagrama (UDP, User Datagram Protocol)Protocol)

• Sin conexión– Bloques de datos de usuario de hasta 64 KB

(Datagramas). No hay control de errores, ni control del flujo.

– Admiten multicast (comunicación uno a varios).

• Los Datagramas son paquetes de datos que son enviados sin garantizar que la información fue bien recibida.

– La clase DatagramSocket representa el socket UDP.– La clase DatagramPacket representa la información.

Page 10: Networking

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 16-16-1313

Una aplicación sencilla con Una aplicación sencilla con sockets UDPsockets UDP

Dos procesos:

• Emisor: pide al usuario que introduzca un texto por teclado y se lo envía al receptor.

• Receptor: devuelve al emisor el texto que éste le envió convertido a mayúsculas.

Ambos procesos se ejecutan en la misma máquina y se conectan mediante el puerto 4321.

Page 11: Networking

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 16-16-1515

Sockets UDP multipuntoSockets 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).

Page 12: Networking

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 16-16-1616

Una aplicación Multicast sencillaUna aplicación Multicast sencilla

• 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 la lectura del teclado y después espera la recepción de los mensajes multicast hasta que algún proceso envíe la palabra FIN.

Page 13: Networking

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 16-16-1717

La clase URLLa clase URL

• Cuando alguien accede a un servidor web, generalmente lo hace para obtener un documento, para lo que usa una URL (que en java se representa mediante la clase java.net.URL).

• De esta forma no tenemos que conocer los detalles del protocolo HTTP que utilizan los servidores web (ni la dirección IP del servidor, ya que la clase URL se encarga de traducir el nombre del host a una dirección IP usando el servicio DNS).

• Con URL.openConnection() podemos establecer una conexión TCP a través de la cual también se pueden transmitir datos.

Page 14: Networking

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 16-16-1818

RMI - Remote Method InvocationRMI - Remote Method Invocation

• RMI o Remote Method Invocation es la solución disponible en Java para desarrollar sistemas de objetos distribuidos.

• Cuando utilizamos sockets, hemos de preocuparnos de cómo se transmiten físicamente los datos entre los extremos de una conexión (a nivel de bytes, ya que usamos los “streams” estándar)

• RMI permite olvidarnos de los detalles de la transmisión de datos y centrarnos en el diseño de la lógica de nuestra aplicación, puesto que nos permite acceder a un objeto remoto como si de un objeto local se tratase.

Page 15: Networking

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 16-16-1919

Objetos e interfaces remotosObjetos e interfaces remotos

• Para que un objeto sea accesible de forma remota, ha de implementar un interfaz remoto (derivado de java.rmi.Remote)

• Cuando una llamada a un método realizada desde el cliente devuelve un objeto remoto, en vez de obtener una copia del objeto, se obtiene una referencia al objeto remoto (un stub que hace de proxy y se comporta igual que el objeto remoto).

Page 16: Networking

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 16-16-2121

Una aplicación sencilla con RMIUna aplicación sencilla con RMI

• Se desea brindar los servicios de cálculo de enteros de una calculadora básica, estos servicios deberán ser ejecutados en un servidor y accedidos a remotamente por n clientes.

• Los servicios disponibles son:– int sumar(int a, int b)– int restar(int a, int b)– int multiplicar(int a, int b)

Page 17: Networking

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 16-16-2424

ResumenResumen

• El paquete java.net del jdk de Java contiene las clases necesarias para trabajar en red

• La clase InetAddress representa un dirección Ip o un host• Los sockets TCP están orientados a conexión.• Los sockets UDP permiten el envío asíncrono de mensajes y

multicast• La clase URL encapsula la forma de conexión y flujo de

bytes de una conexión TCP• RMI permite la invocación remota de operaciones

Page 18: Networking

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 16-16-2525

Práctica 16Práctica 16

Objetivos

– Implementar aplicaciones cliente/servidor utilizando el paquete java.net

– Implementar aplicaciones distribuidas con RMI