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.

Slides:



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

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.
Introducción a la programación en JAVA
EXCEPCIONES UNIDAD 5.
Programación Interactiva Manejo de Excepciones
Programación Interactiva Aplicaciones Cliente-Servidor
“GUI para Conexiones y Transferencia de Datos Seguros”
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
ENTRADA/SALIDA ENTRADA/SALIDA DESDE O HACIA UN PROCESO
Manual FastTrack de PC2 M.C. Juan Carlos Olivares Rojas Marzo 2010.
SOCKETS INTRODUCCIÓN DEFINICIÓN TIPOS DE SOCKETS USO DE SOCKETS.
Modularidad Estructura de datos.
Introducción a Programación Concurrente
Archivos Implementar un método que lea una secuencia de números enteros de un archivo y compute la cantidad de elementos leídos.
Tema 1. Introducción a la programación (Lenguaje java).
2.4 Construcción de un TAD a partir de otro.
UNIVERSIDAD LATINA (UNILA)
RMI (Remote Method Invocation)
Servidor.pl #!/usr/local/bin/perl use Socket; ($port) $port = 2345 unless $port; Empleamos el módulo Socket, equivalente a las definiciones que.
PROGRAMACIÓN ORIENTADA A OBJETOS
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.
Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
La estructura básica de los programas en java, algo a tener en cuenta y que debemos recordar siempre es el archivo debe llevar el nombre de la clase con.
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.
Manejo de excepciones en Java
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
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.
Creación de Aplicaciones
Tema 6: Clases Antonio J. Sierra.
En Java las estructuras de repetición son las mismas que en C/C++.
Sistemas Operativos Distribuidos Prácticas Justo N. Hidalgo Sanz Universidad Antonio de Nebrija 2002/03.
Unidad I Java y C++ : Similitudes y diferencias
If anidados y Switch Prof. Lillian Bras.
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.
1 TEMA 5. Seguridad en Java 1.Introducción a los Controladores de Seguridad 2.Decidir qué Métodos Sobreescribir del SecurityManager 3.Escribir un Controlador.
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.
Programación Orientada a Objetos
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.
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.
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.
1 Capítulo 21: Interacción Cliente Servidor ICD 327: Redes de Computadores Agustín J. González.
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.
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: 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.
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: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
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.
Introducción Nivel 4. Modelo OSI Propiedades Nivel 4 Entrega de mensajes garantizada. Entrega de mensajes en el mismo orden en el que fueron enviados.
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
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:

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. NOTAS

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. NOTAS

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: “192.123.355.211”) 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 5555. 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” NOTAS

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 servidores. NOTAS

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? (ver DateClient.java) ¿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 habría que modificarlo para que se conecte con el servidor pop (110) y revise cuántos mails hay para un cierto usuario ? ¿Cómo se vería un cliente genérico que sirva de marco para todo esto? NOTAS

Un Cliente Genérico 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 <host> <port> <protocolo>)”); int nport = Integer.parseInt(args[1]); int protocolo = Integer.parseInt(args[2]); 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]); } protocolo(in,out, protocolo); NOTAS

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 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. NOTAS

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) InetAddress 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() NOTAS

A Server for the Date We will program now a date server a computer which has not one (for example, a MS-Windows computer) 3 answer with the date in another socket 4 close the connection Client Date server 13 1 Create the server socket 2 start listening DateServer DateClient2

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. NOTAS

Una situación de transmisión de archivos 2) El enviador trata de contactar al recibidor 1) El recibidor queda escuchando a ver si alguien quiere mandarle algo 4) Send bytes 5) Write bytes in file 3) Read bytes from file Repeat 3,4,5 until all the file is transmitted Ver programas ArchEnviador.java ArchRecibidor.java

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. NOTAS

Un servidor de archivos más inteligente 1) Filename from keyboard 2) Request file 4) Send file 5) Write file 3) Read File Repeat 3,4,5 until all the file is transmitted Ver programas ArchServer.java ArchCliente.java