Download Comunicaciones en Java
Document related concepts
no text concepts found
Transcript
Comunicacion en Java Alejandro Escobar Introducción a las comunicaciones Modelo básico de red Imagen tomada de: http://java.sun.com/docs/books/tutorial/networking/overview/networking.html Normalmente programamos sobre la capa de aplicación, es decir creamos aplicaciones que utilizan algún medio de transporte Introducción a las comunicaciones El paquete java.net nos brinda las clases necesarias para la realización de aplicaciones. Solo se hace necesario comprender los conceptos de transporte (UDP y TCP). TCP (Transmission Control Protocol) UDP (User Datagram Protocol) Se establece la conexión y se envian los datos. No se establece la conexión, se envian datagramas de una aplicación a otra Protocolo basado en la conexión, se garantiza el envio y recepción de los datos No se garantiza la recepción de los paquetes enviados. Introducción a las comunicaciones Un computador generalmente tiene una conexión física de red, esto nos lleva a preguntarnos, ¿Cómo sabe el computador a que programa le están enviando datos? La respuesta es el concepto de puerto Diferentes servicios, cada servicio esta asociado a un puerto ftp 21/tcp telnet 23/tcp smtp 25/tcp mail http 80/tcp Dirección IP Introducción a las comunicaciones En una comunicación establecida por TCP, el recurso que actua como Server mapea un socket con un puerto para establecer la comunicación. Los protocolos TCP y UDP usa un mapeo de puertos para un proceso o programa en particular que se este ejecutando en el computador (Server) Imagen tomada de: http://java.sun.com/docs/books/tutorial/networking/overview/networking.html Introducción a las comunicaciones El rango de puertos disponibles va de 0 a 65,535, se ha reservado un rango como puertos restringidos de 0 a 1023. Mapeo de puertos Vs aplicaciones: Imagen tomada de: http://java.sun.com/docs/books/tutorial/networking/overview/networking.html Sockets - Clases TCP TCP proporciona el protocolo necesario para establecer un canal de comunicación en aplicaciones tipo Cliente / Servidor Un socket es un punto final de comunicación de doble via bidireccional entre dos programas que se ejecutan en la red. Un socket está mapeado a un número de puerto para que la capa TCP pueda identificar la aplicación que está destinada a recolectar los datos para ser enviados. Proceso de comunicación 1. El cliente conoce con que server quiere comunicarse 2. El cliente solicita una conexión con el server, estableciendo la dirección IP del server y el puerto de comunicaciones. 3. Si todo esta bien, el server acepta la conexión con el cliente creando un socket entre los ambos. Proceso de comunicación 1 • Creación, establecer comunicación y apertura 2 • Lectura, escritura, recepción y envio de datos. 3 • Cierre y destrucción de la conexión Ejemplo de un cliente 1 • Socket echoSocket = new Socket(“nombremaquina", 7); • out = new PrintWriter(echoSocket.getOutputStream(), true); • in = new BufferedReader(new InputStreamReader( echoSocket.getInputStream())); 2 • while ((userInput = stdIn.readLine()) != null) { • out.println(userInput); • System.out.println("echo: " + in.readLine()); •} 3 • out.close(); • in.close(); • stdIn.close(); • echoSocket.close(); Ejemplo tomado de http://java.sun.com/docs/books/tutorial/networking/sockets/readingWriting.html Ejemplo de un Server 1 2 3 •ServerSocket serverSocket = new ServerSocket(4444); •Socket clientSocket = serverSocket.accept(); •PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); • BufferedReader in = new BufferedReader( new InputStreamReader( clientSocket.getInputStream())); • • • • • • while ((inputLine = in.readLine()) != null) { outputLine = kkp.processInput(inputLine); out.println(outputLine); if (outputLine.equals("Bye.")) break; } • • • • out.close(); in.close(); clientSocket.close(); serverSocket.close(); Ejemplo tomado de http://java.sun.com/docs/books/tutorial/networking/sockets/readingWriting.html En general