Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 13 Ing. Ronald Criollo.
Advertisements

Curso de Java Java – Redes Rogelio Ferreira Escutia.
Nau Gran dHivern Intr. a la creación y gestión de páginas web Introducción a la web.
Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos.
EXCEPCIONES UNIDAD 5.
Programación Interactiva Aplicaciones Cliente-Servidor
“GUI para Conexiones y Transferencia de Datos Seguros”
CGI I La mayor parte de los elementos HTML de que disponemos permite al visitante visualizar los contenidos de un sitio, pero no interactuar con él. Dicho.
Capacitación de Herramientas para el Desarrollo WEB Modulo I- Fundamentos de Internet Sesión #1 María Paz Coloma M.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Sockets y Threads en JAVA
SOCKETS INTRODUCCIÓN DEFINICIÓN TIPOS DE SOCKETS USO DE SOCKETS.
Introducción a Programación Concurrente
UNIVERSIDAD LATINA (UNILA)
Servidor de Batalla Naval.
Qué pasa cuando varios clientes tratan de conectarse al mismo teimpo a un servidor Una forma es ir atendiéndolos de a uno en un ciclo: como en el programa.
El Socket Un socket es un extremo de un link de comunicación entre dos programas que corren en una red. El socket esta asociado (amarrado, bound) a ub.
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors Christophe Fontano Julien Alagnou Socket.
Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.
Tema 6: Clases Antonio J. Sierra.
Sistemas Operativos Distribuidos Prácticas Justo N. Hidalgo Sanz Universidad Antonio de Nebrija 2002/03.
1 Streams en Java Agustín J. González ELO Generalidades Un Stream es simplemente una fuente o destino de bytes. Los streams más comunes son los.
Archivos y Búsqueda Secuencial
Sockets en Java. Sockets ● Para programar aplicaciones en red en Java se utilizan los Sockets. ● Un socket permite establecer y manejar una conexión entre.
INTEGRANTES: MARTINEZ MISHELL MEDINA ENID MENENDEZ EVELYN INTEGRANTES: MARTINEZ MISHELL MEDINA ENID MENENDEZ EVELYN.
WORLD WIDE WEB Conceptos básicos.
66.69 Criptografía y Seguridad Informática FIREWALL.
Entrada / Salida. Java adopta de Unix el concepto de stream Un stream es un flujo de datos (secuencia de bytes) que va de una fuente a un destino. Desde.
Cliente/Servidor ● Normalmente queremos algo más que conectarnos a un servidor ● El servidor nos va a dar un servicio ● Protocolo – Orden y tipo de datos.
PROTOCOLO H T T P.
La Web y el HTTP. Antes del año 1990 Internet era usado por InvestigadoresAcadémicosEstudiantes Transferir archivos logearse remotamente Enviar/recibir.
SOCKETS.
AXEL LATORRE GABRIEL VALENZUELA GIAN PAOLO ALMEIDA ROMMEL CHIFLA ISABEL VILLEGAS INTEGRANTES.
Sockets. / Los sockets (zócalos, referido a los enchufes de conexión de cables) son mecanismos de comunicación entre programas a través de una red TCP/IP.
Programación Orientada a Objetos Unidad 4 Excepciones Universidad de Chile Departamento de Ciencias de la Computación.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Programando Clientes TCP Postítulo La Clase InetAddress Una dirección IP es la dirección absoluta de un computador cualquiera en toda la internet.
2: Capa Aplicación 1 Capa Aplicación: FTP ELO322: Redes de Computadores Agustín J. González Este material está basado en:  Material de apoyo al texto.
Sebastián Franco Henao
Java.
User Datagram Protocol UDP Juan Pablo Araneda Danilo Araya Z.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Programando servidores Postítulo Programando servidores Qué pasa en el servidor cuando el cliente trata de hacer un rendezvous ? El server empieza.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
 Claudia Jordan Idrovo.  Son los puntos de enganche para cada conexión de red que realizamos. El protocolo TCP (el utilizado en internet) identifica.
Andres Marín L. Programación sockets en java.
LABORATORIO DE ESTRUCTURA DE COMPUTADORES II Desarrollo de aplicación Cliente-Servidor.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
2: Capa Aplicación 1 Capa Aplicación: File Transfer Protocol ELO322: Redes de Computadores Agustín J. González Este material está basado en:  Material.
Tema 6 – Servicio de Correo Electrónico
File Transfer Protocol.
DIRECCIONES URL Las siglas URL corresponden a las palabras inglesas Universal Resource Locator, que en español viene a significar algo así como "Localizador.
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Planificación Curso UNIDAD 1. INTRODUCCIÓN A LOS SERVICIOS EN RED UNIDAD 2. SERVICIOS DHCP UNIDAD 3. SERVICIOS DNS UNIDAD 4. SERVICIOS DE ACCESO REMOTO.
Protocolos de Transporte y Aplicación Javier Rodríguez Granados.
1 Introducción a las Comunicaciones en Red. import java.net.InetAddress; import java.net.UnknownHostException; public class PruebaSockets { public static.
DOCENTE: EMILIO ISMAEL BUSTAMANTE MONTES
Transcripción de la presentación:

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 1 La Clase InetAddress  Una direccion IP es la dirección absoluta de un computador cualquiera en toda la internet. En la versión actual consiste en un valor guardado en 4bytes. Datos pueden ser mandados de un computador a otro en la internet sólo si se tiene este número del destinatario.  No tiene constructores, se crea un objeto InetAddress nuevo haciendo InetAddress n = InetAddress.getLocalHost() InetAddress n = InetAddress.getByName(nombre)  Y tiene los siguientes métodos:  String nombre = n.getHostName()  String direccion = n.getHostAddress()  ver programa ejemplo

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 2 La Clase URL  Un URL es un UNIFORM RESOURCE LOCATOR. Consiste en una dirección de un recurso que un servidor en la internet pone a disposición de los usuarios, como por ej.  En un objeto URL existen dos componentes principales: El descriptor de protocolo (ej. http) y el nombre del recurso (ej. http significa Hyper Text Transfer protocol pero hay otros protocolos de transferencia de datos en la internet como: el File Transfer protocol (ftp), Gopher, File o News.  En java es posible abrir una direccion de URL leer el contenido como si fuera un archivo cualquiera. Para ello debemos crear un objeto URL, con el nombre del protocolo y la dirección del recurso que queremos recuperar.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 3 La Clase URL (2) Existen varios constructores de URL:  URL unRUL = new URL(“  unURL = new URL(“http”;”  inURL = new URL(“http”,”  Al crear una variable URL se puede producir una excepcion del tipo MalformedURLException por eso se deben tomar las medidas necesarias (como por ej: usar un bloque try-catch) try { URL miURL = new URL(....); } catch(MalFormedURLException e) { // codigo para atrapar la exception }  Métodos que se pueden aplicar a un objeto de la clase URL: getProtocol(), getHost(), getPort(), getFile(), openConnection()

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 4 La Clase URL (3) Si sabemos a priori que el contenido de un URL es texto podemos leerlo de la siguiente manera: import java.net.*; import java,io.*; public class Leer URL { public static void main(String args[]) { try { URL miURL = new URL(“ URLConnection c = miURL.openConnection(); BufferedReader in = new BufferedReader ( new InputStreamReader( c.getInputStream())); String line; while ((line = in.readLine() != null) System.out.prinln(line); c.close(); catch(MalFormedURLException e) { } } Ejercicio: programar esto pero permitir dar el http como parámetro

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 5 El Socket  Un socket es un extremo de un link de comunicación entre dos programas que corren en una red. El socket esta asociado (amarrado, bound) a ub número de port de modo que la capa TCP pueda identificar exactamente la aplicación a la cual están destinados los datos que llegan a un computador.  Normalmente un servidor que corre en un computadore específico tiene un socket que está asociado a un número de port específico. El servidor espera, “oyendo” por el socket a que un cliente quiera establecer alguna comunicación.  Para que un cliente pueda comuncarse con el servidor debe saber a que port está asociado el socket por el cual el servidor está aceptando llamadas. Para hacer una petición de conexión el cliente debe tratar de hacer un rendezvous con por el port donde está escuchando el servidor.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 6 El Socket (2)  Si todo sale bien, el servidor acepta la conexión. Con la aceptación el servidor recibe un nuevo socket asociado a un port nuevo (cuyo número no necesariamente conoce). El port original (por donde escuchaba) queda libre para seguir escuchando otras peticiones.  Se crea un link de comunicaciones bi-direccional entre el servidor y el cliente. En el servidor, el extremo está asociado al nuevo port.  En el cliente, si la conexión fue aceptada por un servidor, se crea un socket asociado a un port (cuyo nombre no es necesariamente conocido).  El cliente y el servidor se comunican escribiendo datos en o leyendo datos desde el socket.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 7 Sockets en el Cliente en Java (1)  Cuando un programa cliente (llamador) en java desea conectarse con un servidor (en cualquier lenguaje!) debe saber primero dónde esta corriendo (host) y en que port está escuchando.  El host lo puede dar como dirección (Ej: “ ”) o como nombre (ej: achawall.dcc.uchile.cl).  Sabiendo esto puede interntar un “rendezvous” con el servidor. Esto se hace intentando crear una conexión TCP y recogiendo el extremo del circuito virtual en un socket Socket llamando; llamando = new Socket(host,5555);  Esto queda esperando hasta que se realiza la conexión en el servidor y se crea el socket, que es el extremo local de la conexión. El otro extremo (servidor) NO está asociado al port Ese se usó solamente para oir.  Esto puede ocacionar un error si el host no existe, no está alcanzable por la red o no hay ningún servidor oyendo por ese socket. Para eso hay naturalmente un timeout.  Conviene por esto siempre ejecutarlo en un bloque try con el catch “agarrando una excepción “UnknownHostException”

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 8 Sockets en el Cliente en Java (2)  Si todo sale bien con la conexión, podemos abrir un canal de lectura y/u otro de escritura para poder recibir y/o enviar datos. PrintWriter out = new PrintWriter(llamando.getOutputStream(), true); BufferedReader In = new BufferedReader(new InputStreamReader(llamando.getInputStream()));  getInputStream y getOutputStream abren flujos de datos orientados a la lectura y escritura de bytes por la línea. Printwriter y BufferedReader son “filtros” que permiten leer y escribir strings. out.print(“hola pelao”); out.println(“como estas”); String linea = in.readLine();  El servidor debe enviar una marca de fin de línea (ascii) !!!!  Veamos un cliente que se conecta al servidor echo de una máquina Unix. Modifíquelo para que se conecte a otros.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 9 Programas Cliente en Java  Veamos un cliente que se conecta al servidor echo de una máquina Unix.  ¿Cómo habría que modificarlo para que se conecte con el servidor date (13) y muestre la fecha?  ¿Cómo habría que modificarlo para que se conecte con el servidor www (80) y muestre el archivo pedido?  ¿Cómo habría que modificarlo para que se conecte con el servidor finger (79) y muestre la consulta pedida?  ¿Cómo habría que modificarlo para que se conecte con el servidor ftp ( ???) y realice el diálogo?  ¿Cómo se vería un cliente genérico que sirva de marco para todo esto?

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 10 Programas Cliente en Java import java.io.*; import java.net.*; public class Cliente { public static void main(String[] args) throws IOException { Socket echoSocket = null; PrintWriter out = null; BufferedReader in = null; if (args.length != 2) System.out.println(“Use: java Cliente )”); int nport = Integer.parseInt(args[1]); int protocolo = Integer.parseInt(args[1]); try { echoSocket = new Socket(args[0],nport); out = new PrintWriter(echoSocket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream())); } catch (UnknownHostException e) { System.err.println("Don't know about host: "+ args[0]); System.exit(1); } catch (IOException e) { System.err.println("Couldn't get I/O for the connection to: "+args[0]); System.exit(1); } protocolo(in,out, protocolo); }

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 11 Sockets en el Servidor (1)  El servidor debe empezar por crear un socket servidor y asociarlo a un por desde donde escucuchará peticiones de posibles clientes que quieran conectarse. ServerSocket escuchando; escuchando = new ServerSocket(5555);  Con esto sólo ha creado el socket pero no está escuchando. Para poder empezar a escuchar debe hacer: Socket = escuchando.accept();  Esta instrucción hace varias cosas:  accept bloquea la ejecución del programa hasta que recibe una petición de un cliente por ese port (recordemos: llamando = new....)  cuando llega un requerimiento de conexión, se crea un circuito virtual entre ambos computadores. El cliente recibe un extremo de esa conexión y el servidor la otra. Este otro extremo se asocia a otro socket que el sistemqa escoge convenientemente.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 12 Sockets en el Servidor (2)  El servidor puede ejecutar los mismos métodos sobre su socket para abrir un flujo de entrada y salida de datos.  Aquí es importante el PROTOCOLO DE LA COMUNICACIÓN que no es más que las reglas que deben seguir servidor y cliente para comunicarse. Es muy importante que ambos tengan claros cuándo y qué se puede/debe escribir y/o leer. Ej. Cual es el protocolo de echo ?, de Date ? de telnet ?  Existen algunos otros métodos que se pueden ejecutar sobre un objeto de tipo Socket (notar que tante el servidor como el cliente estan con un socket de la misma clase después de haber establecido la comunicación)  InteAddress getInetAddress()  int getPort()  InetAddress getLocalAddress()  int getLocalPort()  void setSoTimeout(int timeout) int getSoTimeoute()  void setSoLinger(Boolean on, int val) int getSoLinger() (el delay despues de un close())  close()

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 13 Sockets: Transmisión de Archivos(1)  Hagamos ahora un para de programas que se transmitan un archivo.  El que recibe el archivo se pone a escuchar para que le manden un archivo (es el servidor !!!)  El enviador del archivo sabe donde está escuchando el recibidor para recibir la petición de transmisión de archivos.  El traspaso se hace a nivel de bytes para poder traspasar cualquier tipo de archivo.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 14 Sockets: Transmisión de Archivos(2)  Hagamos ahora un par de programas algo más inteligentes:  El Servidor queda esperando una petición en un port  Cuando llega una petición lee el nombre del archivo a entregar  Abre el archivo y lo transmite por el socket.  El cliente trata de conectarse con el servidor en el port acordado  una vez que resulta envía el nombre del archivo que quiere recuperar  Lee hasta que encuentra un fin de archivo y lo va guardando en un archivo del mismo nombre que el original.