Programación Orientada a Objetos con Java

Documentos relacionados
Desarrollo de Aplicaciones Distribuidas. Sockets. Daniel Avellaneda

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

Arquitecturas cliente/servidor

Sockets UDP. Arquitecturas Cliente/Servidor, Sem M.I.Yasmine Macedo Reza

Tema II. Sockets. Desarrollo de Aplicaciones para Internet Curso Miguel Reboiro Jato

Arquitecturas cliente/servidor

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES (MÓDULO 2)

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

Universidad de Cantabria

Capítulo 5. Programación de aplicaciones de red

Unidad 4. Introducción a los sistemas distribuidos

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

Federico Peinado

Red LSUB. 4 de marzo de 2015 GSYC

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

Juan Pavón Mestras Dep. Sistemas Informáticos y Programación Universidad Complutense de Madrid.

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

Programación para redes con Java

Material Apoyo Práctica 2. Programación de la interfaz de acceso a los servicios de transporte de Internet en JAVA

EJEMPLOS PROGRAMACIÓN SOCKET - JAVA

UNIVERSIDAD POLITÉCNICA DE PACHUCA SOCKETS EN JAVA

Direcciones IP y puertos

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

Aplicaciones Cliente-Servidor Con Datagramas

Tema 3: COMUNICACIÓN ENTRE PROCESOS

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

Lab 01: Programación de Sockets en TCP

PROGRAMACION DISTRIBUIDA

Formato para prácticas de laboratorio

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

Introducción a las Redes de Computadoras

Introducción a las Redes de Computadoras. Capa de aplicación. Programación con Sockets. Capitulo 2 Capa de Aplicación

Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN

Multienhebrado en Java Un toque de sincronización Transporte en Java Ejemplo conjunto

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

Práctica 2 Programación de Aplicaciones Distribuidas: Sockets TCP. Laboratorio de Comunicación de Datos ITT Telemática 26 de Septiembre 2011

Sockets. Sockets. 1 Introducción

EL LENGUAJE DE PROGRAMACIÓN JAVA TM

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

Maestro Coordinador de la Carrera Gestión de la Calidad Director de la Facultad

Práctica 3: Introducción a los sockets en Java

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA

Lenguaje Java Avanzado

Laboratorio de Redes de Comunicaciones Programación con Sockets en Java

La pila TCP/IP es la familia de protocolos que dirige el internet actual. Mientras otros protocolos también se usa en redes de computador, TCP/IP es

Protocolos de transporte y aplicación

Tema 7. Programacion en red.

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

Justamente, una de las formas de crear un objeto de la clase URL permite especificar también el puerto:

Examen de Redes - Primer Parcial - ETSIA - 17 de Junio de 2005

Desarrollo de Aplicativos con winsockets

Visualizador del examen - ENetwork Chapter 4 - CCNA Exploration: Network Fundamentals (Versión 4.0)

REDES DE DATOS Modelo OSI. Angélica Flórez Abril, MSc.

Bloque I: Introducción. Tema 2: Introducción a TCP/IP

Objetivos. El alumno empleará el concepto de excepción en la programación orientada a objetos para el manejo de errores de ejecución.

PRACTICA FINAL. Diseño e implementación de un servidor FTP básico y cliente ftp. Protocolo FTP-RC

Ingeniería en Automática Industrial Software para Aplicaciones Industriales I

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

PROTOCOLO FTP PROTOCOLO DE TRANSFERENCIA DE ARCHIVOS ING. RAUL BAREÑO GUTIERREZ RAUL BAREÑO GUTIERREZ 1

Cliente/Servidor en Java

// Comprobamos que la ejecución por línea de comandos es correcta; // si no es así, se indica la forma correcta.

Examen Final de Redes - ETSIA - 1 de Junio de 2007

Bloque I: Introducción. Tema 2: Introducción a TCP/IP

Redes de Computadores

Capa Aplicación: Programación de sockets

PROGRAMACION DISTRIBUIDA

Sockets. Introducción. Las redes de computadoras permiten al usuario. Curso Propedéutico Maestría en Ciencias de la Computación BUAP

Capa Aplicación: Programación de sockets

ARQUITECTURAS CLIENTE/SERVIDOR

Servicios de Internet

Servicios de Internet

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

ADMINISTRACIÓN GENERAL DE TECNOLOGÍA DE LA INFORMACIÓN ADMINISTRACIÓN CENTRAL DE DESARROLLO Y MANTENIMIENTO DE APLICACIONES

Capítulo 3: Capa Transporte - I

GUÍA DE ESTUDIO TEMA 2. MODELO OSI. ESTÁNDARES Y PROTOCOLOS. MODELO TCP/IP.

Nivel de Aplicación: Principios Tema 2.- Nivel de aplicación en Internet

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

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

Capa Aplicación: Programación de sockets

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

Curso de Java Java Redes

Redes (IS20) Ingeniería Técnica en Informática de Sistemas. CAPÍTULO 8: El nivel de transporte en Internet

Arquitecturas cliente/servidor

Nivel aplicación Interacción Cliente Servidor. Agustín J. González ELO309

Conexión TCP Servidor

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

Teoría de las Comunicaciones

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

Luego lleve el cliente a otra máquina y ejecute desde ahí usando el nombre de la máquina del servidor.

Servicios en Red. UT6. Servicio HTTP

URLs en Java. Contenido. La clase URL Acceso al contenido de una URL La clase URLEncoder La clase URLConnection

PROTOCOLO TCP/IP. 5 Capa de aplicación (HTTP, SMTP, FTP, TELNET...) 2 Capa de acceso a la red (Ethernet, Token Ring...)

Flujos (streams) Programación. Licenciatura Lingüística y Nuevas Tecnologias Nadjet Bouayad-Agha

Tabla: producto Campo: codigo varchar(13) Campo: nombre varchar(40) Campo: precio int Campo: unidades int PRIMARY KEY: codigo

Código de ética. Temario. Herramientas. Entrar en ubuntu

Transcripción:

Programa de Formación y Actualización Docente Programación Orientada a Objetos con Java Rafael Rivera López Departamento de Sistemas y Computación Invierno 2005 1 Veracruz, Ver. IV Temas Avanzados 2

IV.2 TCP/IP e Internet 3 URLs Cada pieza de información en la Web tiene una dirección de identificación única llamada URL (Uniform Resource Locator). Ejemplo: http://mx.geocities.com/progiii_rrl/page7.htm Archivo Host/Computadora Protocolo 4

Elementos del URL Protocolo: Especifica como será accesada la información. Host: Es la máquina (nodo) origen de la información. File: Es el archivo que se requiere. 5 Demonio de HTTP La información de Internet se almacena en servidores Web. Se accesa a la información disponible con programas llamados demonios (HTTP-daemon). Un HTTPD es una aplicación que está activa en el servidor y que espera las solicitudes de información. 6

Interacción Navegador-HTTPD Solicita /index.html usuario solicita http:// java.sun.com /index.html host java.sun.com Envía el contenido de index.html Aplicación de HTTPD Disco Navegador 7 Protocolo Un protocolo es un conjunto de reglas que definen el tipo de comunicación: 9 344101 Si conoce la extensión, capturela 5 Conectando a la extensión solicitada 8

Base de trabajo en red La comunicación en red es complicada, por lo que el trabajo se divide Las funciones de red se dividen en capas. Cada función tiene asociado un protocolo TCP/IP es el conjunto de protocolos para comunicación por internet: Capa Aplicación Transporte Red Enlace Protocolo HTTP, FTP, Telnet,... TCP, UDP IP Ethernet, Token- Ring,... 9 Capa de Red Todo host conectado a la Internet tiene asociado una dirección IP (135.17.98.240). Adicionalmente, toda computadora tiene una dirección local (127.0.0.1) conocido como el localhost Se puede asociar a cada host un nombre de host (hostname), por ejemplo java.sun.com 135.17.98.250 127.0.0.1 localhost 10

Capa de transporte Todas las capas son importantes, pero la capa de transporte es la que asegura la entrega de la información entre hosts La información que viaja en internet se divide en paquetes de longitud pequeña, que utilizan la red para viajar TCP/IP tiene dos protocolos de transporte: TCP y UDP 11 Capa de transporte TCP (Protocolo de control de transmisión) Verifica que el destino reciba los datos (orientado a conexión) Garantiza un flujo de datos confiable entre dos computadoras. Mantiene el orden de los paquetes enviados. UDP (Protocolo de datagrama de usuario) Envía paquetes de forma independiente. No se garantiza el orden de llegada de los paquetes. No verifica el destino (sin conexión) Más rápido 12

Se utiliza TCP para: Se utiliza UDP para: Transmisión de Audio Transmisión de video TCP ó UDP? HTTP (páginas Web) FTP (Transferencia de archivos remotos) Telnet (Terminal remota) 13 Puertos Cada host en Internet puede ofrecer varios servicios (internet, copia de archivos, correo) a través de los diferentes protocolos existentes. Los involucrados deben saber de antemano que tipo de servicio se utilizará. Un puerto es una abstracción de software que se asocia a cada típo de servicio. Un puerto es un número de 16 bits que identifica a cada servicio ofrecido por un host (un servidor) 14

Puertos Cada destino en Internet es identificado por un host (dirección IP de 32 bits) y un puerto (16 bits). Protocolo HTTP (Transferencia de Hipertexto) Correo Telnet (conexión remota) FTP (Transferencia de archivos) Puerto 80 25 23 21 por qué no se especifica un puerto al usar un navegador? 15 IV.2 Trabajando con redes 16

El paquete java.net El paquete java.net proporciona clases base para trabajar con redes Contiene clases que admiten la comunicación cliente/servidor basada en sockets Proporciona clases para manejar direcciones IP y URL 17 Paquete java.net Object ServerSocket Socket Para cliente/servidor orientado a conexión DatagramPacket DatagramSocket Para cliente/servidor sin conexión Para información de una dirección IP InetAddress URL Para localizar recursos en Internet 18

IV.2 Direcciones IP 19 Clase InetAddress La clase InetAddress representa las direcciones del protocolo IP Método gethostname() gethostaddress() getbyname(string) getlocalhost() Descripción Devuelve el nombre del objeto Devuelve la IP del objeto Devuelve un objeto InetAddress de un host Devuelve un objeto InetAddress de la máquina local 20

Ejemplo Devuelve un objeto asociado al nombre del t java.net.*; host c class DireccionIP { ic static void main(string[] args) { { etaddress host=inetaddress.getbyname("www.itver.edu.mx"); stem.out.println("host="+host); stem.out.println("ip="+host.gethostaddress()); stem.out.println("nombre="+host.gethostname()); stem.out.println( "Localhost="+InetAdress.getLocalHost()); ch(unknownhostexception ex){ stem.err.println("host desconocido"); stem.exit(0); Devuelve un objeto asociado al localhost El nombre del host La IP del host 21 Ejemplo t java.net.*; c class DireccionIP { ic static void main(string[] args) { { etaddress host=inetaddress.getbyname("www.itver.edu.mx"); stem.out.println("host="+host); stem.out.println("ip="+host.gethostaddress()); stem.out.println("nombre="+host.gethostname()); stem.out.println( "Localhost="+InetAdress.getLocalHost()); ch(unknownhostexception ex){ stem.err.println("host SALIDA: desconocido"); stem.exit(0); Host : www.itver.edu.mx/148.208.233.80 IP : 148.208.233.80 Nombre : www.itver.edu.mx Localhost: Proy-Inv/10.10.200.103 22

IV.2 Recursos de la Web 23 Clase URL La clase URL representa una Uniform Resource Locator, un apuntador a un recurso en la Web. Un recurso puede ser algo tan simple como un archivo o un directorio, o puede ser una referencia a un objeto más complejo (una consulta a una base de datos, un motor de búsqueda) 24

Lectura desde un URL Abrir flujo de bytes ()URL.openStream Filtro InputStreamReader Maneja bytes como caracteres BufferedReader ()readline Contenido de una página 25 Ejemplo import java.io.*; import java.net.*; public class ManejoURL { public static void main(string[] args){ try { URL url = new URL("http://mx.geocities.com/progiii_rrl/index.html"); InputStreamReader flujo = new InputStreamReader(url.openStream()); BufferedReader filtro = new BufferedReader(flujo); String linea; while ((linea=filtro.readline())!=null) { System.out.println(linea); } filtro.close(); } catch (MalformedURLException ex){...} catch (IOException ex) {...} } } Asocia un objeto a un recurso Web openstream abre un flujo de bytes. InputStreamReader cambia bytes por caracteres. BufferedReader permite leer Strings 26

Ejemplo SALIDA: <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <meta name="generator" content="microsoft Publisher 2000"> <title>programación III</title> </head> <body bgcolor="#ffffff" link="#cc6600" vlink="#808000" text="#000000" background="back.gif" topmargin=0 leftmargin=0> <a name=top></a> <table border=0 27 IV.2 Cliente / Servidor 28

Cliente/servidor Un cliente necesita algún tipo de información Un servidor tiene mucha información que puede proporcionar. Típicamente, un cliente se conecta a un servidor y solicita cierta información. El servidor busca la información y entonces la regresa al cliente. 29 Modelo Cliente/Servidor puerto 80 Aplicación del cliente 200.17.77.12 Aplicación del servidor 64.208.34.100 www.google.com Aplicación del cliente 193.6.124.88 30

Un cliente - Inicia la conexión - Recupera datos - Despliega datos - Responde a la entradas del usuario - Solicita más datos Ejemplos: Navegador,Chat Cliente / Servidor Un servidor: -Responde a la conexión -Recibe la solicitud por datos -Busca los datos -Los libera Ejemplos: Web Server, Database Server, Domain Name Server, Mail Server 31 Cliente / Servidor Se puede implementar un esquema cliente servidor con el protocolo TCP: Utilizando las clases ServerSocket y Socket O se puede implementar con el protocolo UDP: Utilizando las clases DatagramPacket y DatagramSocket 32

IV.2 Sockets TCP 33 Sockets Un socket es un punto final de un enlace de dos vías entre dos programas ejecutándose en la red. Los sockets se utilizan para comunicarse a través de puertos. Un socket es un canal de comunicación que permite trasferir datos entre un puerto. Un socket se asocia a un puerto. Cliente: Utilizando la clase Socket. Servidor: Utilizando la clase ServerSocket 34

Un cliente: 2. Abre un socket Usando un socket TCP 3. Abre flujos de entrada y salida para el socket 4. Lee y escribe en los flujos de acuerdo con los protocolos del cliente 5. Cierra los flujos 6. Cierra el socket Un servidor: 2. Abre un socket 3. Abre los flujos de entrada y salida del socket 4. Lee y escribe en los flujos de acuerdo a los procolos del servidor. 5. Cierra los flujos 6. Cierra el socket 35 Clase ServerSocket (servidor) ServerSocket(int port) Crea un socket en el servidor en un puerto específico. Un puerto 0 crea un socket sobre un puerto libre. Método accept() close() getlocalport() getinetaddress() Descripción Acepta una conexión a este socket. Cierra el socket Regresa el puerto en el cual el socket está asociado. Regresa la dirección IP local del servidor. 36

Clase Socket (cliente) Socket() Socket(InetAddress address, int port); Socket(String host, int port); Crea un socket en el cliente Método getinputstream() getoutputstream() Descripción Asocia un flujo de bytes de entrada por el socket Asocia un flujo de bytes de salida por el socket 37 Ejemplo para Servidor import java.net.*; import java.io.*; public class ServidorTCP { public static void main(string[] args) { int port = 0; String cadena = "Mensaje del servidor"; ServerSocket server = null; try { server = new ServerSocket(port);... } catch (IOException ioe){...} Crea el socket en un puerto libre y espera un cliente Servidor Puerto Socket Un servidor puede atender varios clientes en un puerto, abriendo varios sockets 38

Ejemplo para Servidor try { Socket conexion = server.accept(); InputStream flujobe = conexion.getinputstream(); Reader flujoce = new InputStreamReader(flujoBE); BufferedReader reader = new BufferedReader(flujoCE);... BufferedReader Filtro para leer Strings Acepta conexión Abre flujos conexion.getinputstream() Flujo de bytes del cliente Servidor InputStreamReader Maneja un flujo de bytes como flujo de caracteres Cliente 39 Ejemplo para Servidor... OutputStream flujobs = conexion.getoutputstream(); Writer flujocs = new OutputStreamWriter(flujoBS); BufferedWriter writer = new BufferedWriter(flujoCS);... BufferedWriter Filtro para pasar Strings como caracteres Abre flujos conexion.getoutputstream() Flujo de bytes del cliente Servidor Cliente InputStreamWriter Maneja un flujo de caracteres como flujo de bytes 40

Ejemplo para Servidor... System.out.println("El cliente es "+reader.readline()); writer.write("conectado a"+conexion.getinetaddress()); writer.flush(); for(int i=0;i<cadena.length();i++){ writer.write(cadena.substring(0,cadena.length()-i)); writer.flush(); } reader.close(); writer.close(); conexion.close(); readln() Envía datos al cliente Lee del cliente Servidor write() Cliente 41 Ejemplo para Servidor Al correr el programa se presenta la siguiente información: El puerto utilizado por el socket es: 3032 Los clientes deberán conectarse a este servidor usando este puerto La dirección IP del servidor es: Proy-Inv/10.10.200.103 Esperando un cliente Es el número de Esta es la dirección IP del servidor, necesaria para que el cliente se conecte puerto disponible, puede cambiar en cada corrida 42

Lado del cliente El cliente, para conectarse a un servidor con TCP, debe hacerlo indicando a que Servidor y en que puerto se va a conectar. El método Socket(Servidor, puerto) permite crear una conexión TCP del cliente hacia el servidor readln() Servidor write() Cliente 43 Ejemplo para Cliente public static void main(string[] args) { int port = Integer.parseInt(args[1]); Socket cliente = null; try{ cliente = new Socket(args[0], port); } catch (IOException ioe) {...} Se crea una conexión con el servidor dado en args[0] en el puerto indicado por args[1] Los parámetros del cliente indican el nombre del servidor y el puerto al cual conectarse Se debe ejecutar el programa desde la línea de comandos: C:\>java ClienteTCP servidor puerto 44

Ejemplo para Cliente InputStream flujobe = cliente.getinputstream(); Reader flujoce = new InputStreamReader(flujoBE); BufferedReader reader = new BufferedReader(flujoCE); OutputStream flujobs = cliente.getoutputstream(); Writer flujocs = new OutputStreamWriter(cliente.getOutputStream()); BufferedWriter writer = new BufferedWriter(flujoCS); writer.write(inetaddress.getlocalhost()+"\n"); writer.flush(); String entrada; do{ entrada = reader.readline(); System.out.println("Recibido: "+entrada); } while(entrada.length()>1); De igual forma que el servidor, abre un flujo de escritura y uno de lectura. 45 Ejemplo para Cliente readln() write() Servidor write() readln() Cliente Como es un esquema orientado a conexión, el enlace permanece hasta que se cierra por alguno de los participantes 46

IV.2 Sockets UDP 47 Clase DatagramSocket Los sockets TCP necesitan que se indique establezca una conexión. Para hacer una trasmisión sin conexiones (UDP) se utiliza la clase DatagramSocket. No se asocia un flujo al puerto. Cada paquete debe indicar información del host origen y del host destino 48

Usando un DatagramSocket 5001 Servidor 5000 Cliente Se requieren dos puertos para una comunicación UDP, uno de envio y otro de recepción (El socket de recepción es 5000 y 5001, para este ejemplo). Constructor DatagramSocket() DatagramSocket(puerto) Descripción Para socket de envío Para socket de recepción 49 Usando un DatagramSocket send() Servidor 5000 5001 Cliente receive() send() Para enviar y recibir paquetes se utilizan los siguientes métodos. Un paquete es un objeto de la clase DatagramPacket Método send(datagrampacket) receive(datagrampacket) Descripción Para envío Para recepción 50

Usando DatagramPacket Para construir el paquete a enviar se crea un objeto con este constructor: DatagramPacket(byte[] buf, int length, InetAddress address, int port) Información enviada en un arreglo de bytes Longitud del arreglo de bytes Dirección IP del destino Puerto al que se envía Para construir el paquete que recibe se crea un objeto con este constructor: DatagramPacket(byte[] buf, int length) 51 Servidor UDP class ServerUDP extends Frame{... public ServerUDP(){... try{ socketenvia = new DatagramSocket(); socketrecibe = new DatagramSocket(5000); } catch (SocketException se){... }... } Crea los sockets de envío y recepción 52

Servidor UDP El objeto captura es un TextField donde se captura la información a enviar... captura.addactionlistener(new ActionListener(){ public void actionperformed(actionevent e){ try { byte array[] = new byte[100]; pantalla.append("servidor: "+captura.gettext()+"\n"); array = captura.gettext().getbytes(); paqenviado = new DatagramPacket(array,array.length,host,5001); } socketenvia.send(paqenviado); captura.settext(""); }catch (Exception ex) {... } } }); Se envía el paquete Se construye el paqueta a enviar 53 Servidor UDP El método checa paquetes está escuchando al puerto de entrada si se reciben paquetes public void ChecaPaquetes() { while (true){ try { byte array[] = new byte[100]; paqrecibido = new DatagramPacket(array,array.length); socketrecibe.receive(paqrecibido); String recibido = new String(paqRecibido.getData()); host = paqrecibido.getaddress(); pantalla.append(host.getcanonicalhostname()+": "+recibido); pantalla.append("\n"); } catch (Exception ex){...} } } El servidor identifica al cliente que inicio la conversación y a ese cliente es al que le contesta 54

Cliente UDP El servidor y el cliente UDP tienen el casi el mismo código, solo que el cliente debe indicar a que servidor se conecta public ClienteUDP(String servidor){ try { socketenvia = new DatagramSocket(); socketrecibe = new DatagramSocket(5001); host }... } = InetAddress.getByName(servidor); captura.addactionlistener(new ActionListener(){ public void actionperformed(actionevent e){ try{ paqenviado = new DatagramPacket(array,array.length,host,5000); socketenvia.send(paqenviado);... 55