1 tema 3. programación en red 1.introducción 2.dirección ip. clase inetaddress 3.conexión...

52
1 TEMA 3. TEMA 3. Programación en red Programación en red 1. 1. Introducción Introducción 2. 2. Dirección IP. Clase InetAddress Dirección IP. Clase InetAddress 3. 3. Conexión mediante URL. Conexión mediante URL. 4. 4. Conexión mediante TCP/IP Conexión mediante TCP/IP 5. 5. Conexión mediante UDP/IP Conexión mediante UDP/IP 6. 6. Acceso a Bases de Datos Acceso a Bases de Datos

Upload: maria-victoria-marquez-poblete

Post on 23-Jan-2016

229 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

11

TEMA 3.TEMA 3.Programación en redProgramación en red

1.1. IntroducciónIntroducción

2.2. Dirección IP. Clase InetAddressDirección IP. Clase InetAddress

3.3. Conexión mediante URL.Conexión mediante URL.

4.4. Conexión mediante TCP/IPConexión mediante TCP/IP

5.5. Conexión mediante UDP/IPConexión mediante UDP/IP

6.6. Acceso a Bases de DatosAcceso a Bases de Datos

Page 2: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

22

BibliografíaBibliografía

Bobadilla, J. y otros. Comunicaciones y Bobadilla, J. y otros. Comunicaciones y Bases de Datos en Java. Capítulo 2.Bases de Datos en Java. Capítulo 2.

M.L.Liu. Computación Distribuida. Ed. M.L.Liu. Computación Distribuida. Ed. Pearson. Capítulos 1,2,3 y 4.Pearson. Capítulos 1,2,3 y 4.

Page 3: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

33

Computación monolíticaComputación monolítica. Un único . Un único ordenador, pueden acceder al sistema ordenador, pueden acceder al sistema múltiples usuarios. múltiples usuarios.

Computación distribuidaComputación distribuida. Implica el uso de . Implica el uso de múltiples ordenadores conectados a la red.múltiples ordenadores conectados a la red.

Computación paralelaComputación paralela. Implica el uso de . Implica el uso de varios procesadores simultáneos.varios procesadores simultáneos.

Computación cooperativaComputación cooperativa. En este tipo de . En este tipo de proyectos se divide la computación a gran proyectos se divide la computación a gran escala entre las máquinas de internet. Ej. escala entre las máquinas de internet. Ej. Búsqueda de inteligencia extraterrestre.Búsqueda de inteligencia extraterrestre.

1 . Introducción

Diferentes formas de Computación

Page 4: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

44

Internet es una red de redes, miles de Internet es una red de redes, miles de redes basadas en tecnologías heterogéneas redes basadas en tecnologías heterogéneas se enlazan en la Internet ofreciendo un se enlazan en la Internet ofreciendo un conjunto homogéneo de servicios. conjunto homogéneo de servicios.

En Internet se encuentran ordenadores En Internet se encuentran ordenadores muy diversos con sistemas operativos muy diversos con sistemas operativos diferentes.diferentes.

Los protocolos de la familia TCP/IP son los Los protocolos de la familia TCP/IP son los que hacen posible que todos estos que hacen posible que todos estos sistemas compartan información entre sí. sistemas compartan información entre sí.

1 . Introducción

Internet

Page 5: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

55

La familia de protocolos TCP/IP abarca La familia de protocolos TCP/IP abarca los siete niveles OSI (Open System los siete niveles OSI (Open System

Interconnect).Interconnect).

1 . Introducción

Internet

Page 6: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

66

Cobertura internacionalCobertura internacional Protocolo a nivel de transporte Protocolo a nivel de transporte

es el TCP, UDP y RTSP (real es el TCP, UDP y RTSP (real time streaming protocol).time streaming protocol).

Gran difusiónGran difusión Importancia socialImportancia social Facilidad de acceso (telefónica)Facilidad de acceso (telefónica) … …

1 . Introducción

Internet

Page 7: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

77

Las redes locales permiten compartir Las redes locales permiten compartir recursos como impresoras, modem o recursos como impresoras, modem o disco de almacenamiento entre los disco de almacenamiento entre los ordenadores conectados a al red ordenadores conectados a al red (Ethernet, token Ring, SNA, DECNET).(Ethernet, token Ring, SNA, DECNET).

La tecnología de red local es el La tecnología de red local es el primer eslabón en la cadena de primer eslabón en la cadena de Internet Internet

1 . Introducción

Redes locales

Page 8: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

88

El protocolo IP es el elemento que permite El protocolo IP es el elemento que permite integrar distintas redes entre si (distintas integrar distintas redes entre si (distintas redes: FDDI, RDSI, X.25, lineas dedicadas, redes: FDDI, RDSI, X.25, lineas dedicadas, token ring, ethernet, lineas telefónicas,...) token ring, ethernet, lineas telefónicas,...)

Cada máquina de Internet tiene una Cada máquina de Internet tiene una dirección IP única. Una dirección IP es un dirección IP única. Una dirección IP es un número de 32 bits que normalmente se número de 32 bits que normalmente se escribe como cuatro enteros entre 0 y 255 escribe como cuatro enteros entre 0 y 255 separados por puntos (192.112.36.5).separados por puntos (192.112.36.5).

La dirección IP permite el encaminamiento La dirección IP permite el encaminamiento de la información a través de la Internet. de la información a través de la Internet.

1 . Introducción

Protocolo Internet (IP)

Page 9: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

99

En la terminología de comunicaciones el En la terminología de comunicaciones el protocolo IP define una red de conmutación de protocolo IP define una red de conmutación de paquetes. paquetes.

La información se fragmenta en pequeños trozos La información se fragmenta en pequeños trozos o paquetes (alrededor de 1500 caracteres) que o paquetes (alrededor de 1500 caracteres) que se envían independientemente por la red. se envían independientemente por la red.

Cada paquete es enviado con la dirección del Cada paquete es enviado con la dirección del ordenador donde ha de ser entregado y, de ordenador donde ha de ser entregado y, de forma similar a como funciona un sistema forma similar a como funciona un sistema postal, cada paquete viaja independientemente postal, cada paquete viaja independientemente de los demás por la red hasta alcanzar su de los demás por la red hasta alcanzar su destino. destino.

1 . Introducción

Estrategia de Internet

Page 10: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

1010

Dentro de una red local, el encaminamiento Dentro de una red local, el encaminamiento de la información es simple. En Ethernet por de la información es simple. En Ethernet por ejemplo todos los ordenadores 'escuchan' la ejemplo todos los ordenadores 'escuchan' la red para detectar los paquetes que se le red para detectar los paquetes que se le dirigen a ellos. dirigen a ellos.

Los routers (antes llamados gateway) son Los routers (antes llamados gateway) son los elementos encargados del los elementos encargados del encaminamiento de los mensajes IP. Los encaminamiento de los mensajes IP. Los routers conocen las máquinas conectadas a routers conocen las máquinas conectadas a la red y toman la decisión de como la red y toman la decisión de como encaminar los paquetes de datos a través encaminar los paquetes de datos a través de unos enlaces u otros. de unos enlaces u otros.

1 . Introducción

Estrategia de Internet

Page 11: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

1111

Cada router sólo necesita saber que Cada router sólo necesita saber que conexiones están disponibles y cual es conexiones están disponibles y cual es el mejor "próximo salto" para conseguir el mejor "próximo salto" para conseguir que un paquete este mas cerca de su que un paquete este mas cerca de su destino (El paquete va "saltando" de destino (El paquete va "saltando" de router a router hasta llegar a su router a router hasta llegar a su destino). destino).

Las máquinas de Internet, fuera del Las máquinas de Internet, fuera del entorno de la red local, utilizan un entorno de la red local, utilizan un router para encaminar los paquetes. router para encaminar los paquetes.

1 . Introducción

Estrategia de Internet

Page 12: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

1212

1 . Introducción

Esquema

Page 13: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

1313

Protocolo a nivel de Protocolo a nivel de transporte es el TCP y UDP. transporte es el TCP y UDP.

TCP, supone comunicación TCP, supone comunicación orientada a conexión. Ejemplo la orientada a conexión. Ejemplo la llamada telefónicallamada telefónica

UDP, supone comunicación sin UDP, supone comunicación sin conexión. Ejemplo correo postal.conexión. Ejemplo correo postal.

1 . Introducción

Protocolo de transporte

Page 14: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

1414

El servicio de mayor crecimiento en la red es El servicio de mayor crecimiento en la red es WWW, en el que se distinguen dos tipos de WWW, en el que se distinguen dos tipos de ordenadores: cliente y servidor. ordenadores: cliente y servidor.

Http, es el protocolo de transferencia de Http, es el protocolo de transferencia de hipertexto, permite que navegador (cliente) y hipertexto, permite que navegador (cliente) y servidor puedan hablar entre si mediante un servidor puedan hablar entre si mediante un alfabeto.alfabeto.

El protocolo es muy sencillo: El protocolo es muy sencillo:

– PeticiónPetición: Método solicitado, Cabecera de petición, : Método solicitado, Cabecera de petición, Datos solicitadosDatos solicitados

– RespuestaRespuesta: Código de estado, Cabecera de : Código de estado, Cabecera de respuesta, Datos de respuestarespuesta, Datos de respuesta

1 . Introducción

WWW

Page 15: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

1515

La programación en red ha sido siempre La programación en red ha sido siempre dificultosa, el programador debía conocer dificultosa, el programador debía conocer muchos detalles sobre la red y algunas veces muchos detalles sobre la red y algunas veces sobre el propio hardware. sobre el propio hardware.

La idea es sencilla, se trata de obtener La idea es sencilla, se trata de obtener información desde otra máquina o enviar información desde otra máquina o enviar información hacia otra máquina, en cierta información hacia otra máquina, en cierta manera es parecido a leer y escribir archivos.manera es parecido a leer y escribir archivos.

En Java es muy fácil realizar programas en En Java es muy fácil realizar programas en red. La mayoría de los detalles han sido red. La mayoría de los detalles han sido escondidos y son tratados de forma escondidos y son tratados de forma transparente por parte de la JVM. transparente por parte de la JVM.

1 . Introducción

Programación en red

Page 16: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

1616

Algunas de las capacidades de Java para Algunas de las capacidades de Java para construir programas que trabajen con la construir programas que trabajen con la red son :red son :– Direcciones de Internet (java.net)Direcciones de Internet (java.net)– Conexión mediante URLs (java.net)Conexión mediante URLs (java.net)– Conexión mediante TCP/IP y UDP/IP (java.net)Conexión mediante TCP/IP y UDP/IP (java.net)– Proporcionar servicios vía WWW (servlets y Proporcionar servicios vía WWW (servlets y

JSP)JSP)– Conexión a bases de datos JDBC (java.sql)Conexión a bases de datos JDBC (java.sql)– Acceso a métodos remotos RMI de objetos Acceso a métodos remotos RMI de objetos

(java.rmi)(java.rmi)

1 . Introducción

Programación en red

Page 17: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

1717

La forma que se identifican las La forma que se identifican las máquinas en la red es a través de máquinas en la red es a través de la dirección IP (Internet Protocol) la dirección IP (Internet Protocol) o bien a través de un nombre de o bien a través de un nombre de máquina y usando el mecanismo máquina y usando el mecanismo de resolución de nombres (DNS) de resolución de nombres (DNS) para obtener la dirección IP.para obtener la dirección IP.

En Java se encuentra la clase En Java se encuentra la clase InetAddress que representa una InetAddress que representa una dirección de internet.dirección de internet.

2 . Dirección IP

Direcciones de Internet

Page 18: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

1818

RRepresenta las direcciones única de cada epresenta las direcciones única de cada máquina en Internet. Se representan a máquina en Internet. Se representan a través de un cuatro números de 8 bits, través de un cuatro números de 8 bits, por ejemplo 123.255.28.120. por ejemplo 123.255.28.120. Internamente se representa como un Internamente se representa como un número de 32 bits.número de 32 bits.

Debido a que las direcciones IP son Debido a que las direcciones IP son difíciles de recordar, existe un difíciles de recordar, existe un mecanismo de direcciones simbólicas mecanismo de direcciones simbólicas que asignan un nombre a cada máquina. que asignan un nombre a cada máquina.

2 . Dirección IP

IPIP

Page 19: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

1919

Ya que se van a usar ambos tipos de Ya que se van a usar ambos tipos de direcciones para designar a una máquina direcciones para designar a una máquina se hace necesario que haya un se hace necesario que haya un mecanismo para pasar de uno al otro lado mecanismo para pasar de uno al otro lado y viceversa.y viceversa.

El DNS (Domain Name System) consiste, El DNS (Domain Name System) consiste, básicamente, en una base de datos básicamente, en una base de datos distribuida de forma jerárquica por toda la distribuida de forma jerárquica por toda la Internet que es consultada por el usuario Internet que es consultada por el usuario para llevar a cabo la traducción entre los para llevar a cabo la traducción entre los nombres y las direcciones numéricas. nombres y las direcciones numéricas.

2 . Dirección IP

IPIP

Page 20: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

2020

Esta clase no tiene constructores visibles, podemos Esta clase no tiene constructores visibles, podemos obtener objetos de esta clase de la siguiente forma: obtener objetos de esta clase de la siguiente forma:

InetAddress dir = InetAddress.getLocalHost();InetAddress dir = InetAddress.getLocalHost();

InetAddress dir = InetAddress dir = InetAddress.getByName(String g);InetAddress.getByName(String g);

InetAddress dir = InetAddress dir = InetAddress. InetAddress. getByAddress(byte[] addr)getByAddress(byte[] addr)

La creación de un objeto InetAddress puede generar La creación de un objeto InetAddress puede generar una excepción de tipo UnknownHostException, si no una excepción de tipo UnknownHostException, si no existe dicha dirección Internetexiste dicha dirección Internet

2 . Dirección IP

La clase InetAddressLa clase InetAddress

Page 21: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

2121

import java.net.*;import java.net.*;public class Obtener_IP {public class Obtener_IP { public static void main(String[] args)throws public static void main(String[] args)throws Exception {Exception {

if(args.length != if(args.length != 1) {1) { System.err.println("Escribe el nombre de System.err.println("Escribe el nombre de la máquina");la máquina");

System.exit(1);System.exit(1); }} InetAddress a = InetAddress a = InetAddress.getByName(args[0]);InetAddress.getByName(args[0]);

System.out.println(a);System.out.println(a); }}}}

2 . Dirección IP

La clase InetAddressLa clase InetAddress

Page 22: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

2222

Un URL es la dirección de un elemento o recurso en Un URL es la dirección de un elemento o recurso en la WWW:la WWW:

[protocolo://][dirección][:puerto][/ruta][protocolo://][dirección][:puerto][/ruta]

Donde:Donde:– Protocolo es el lenguaje mediante el que se comunican, los Protocolo es el lenguaje mediante el que se comunican, los

más habituales son:más habituales son: ftp - Protocolo de Transferencia de Ficheros ftp - Protocolo de Transferencia de Ficheros http - Protocolo de Transferencia de HiperTexto http - Protocolo de Transferencia de HiperTexto mailto - Dirección de Correo Electrónico mailto - Dirección de Correo Electrónico news - Noticias USENET news - Noticias USENET

– Dirección es una dirección de internetDirección es una dirección de internet– Puerto es un puerto, normalmente el servicio web esta en el Puerto es un puerto, normalmente el servicio web esta en el

8080– Ruta es una ruta en la máquina del servidorRuta es una ruta en la máquina del servidor

3 . Conexión mediante URL

URLURL

Page 23: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

2323

La clase URL permite la descarga de los datos a los que se La clase URL permite la descarga de los datos a los que se refiere un URL de Internet y, además, consigue cierta refiere un URL de Internet y, además, consigue cierta interacción con ese recurso.interacción con ese recurso.

La clase URL está orientada al tratamiento del protocolo La clase URL está orientada al tratamiento del protocolo HTTP de la web.HTTP de la web.

Java permite crear un URL a partir de una cadena y, luego, Java permite crear un URL a partir de una cadena y, luego, poder establecer una URLConnection con el URLpoder establecer una URLConnection con el URL

URL (String);URL (String);URL (URL, nombre_fich_relativo);URL (URL, nombre_fich_relativo);URL (esquema,anfitrión, nombref);URL (esquema,anfitrión, nombref);URL (esquema,anfitrión, p,nombref);URL (esquema,anfitrión, p,nombref);

En caso de utilizar una sintaxis incorrecta se lanza la En caso de utilizar una sintaxis incorrecta se lanza la excepción MalformedURLExceptionexcepción MalformedURLException

3 . Conexión mediante URL

La clase URLLa clase URL

Page 24: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

2424

Ejemplo:Ejemplo:URL info=new URL info=new URL(“http://www.dsic.upv.es”);URL(“http://www.dsic.upv.es”);

URL frame = new URL frame = new URL(info,”frames.html”);URL(info,”frames.html”);

Dado un objeto URL, las partes que lo Dado un objeto URL, las partes que lo constituyen pueden recuperarse con:constituyen pueden recuperarse con:– getProtocol()getProtocol()– getHost()getHost()– getPort()getPort()– getFile()getFile()

3 . Conexión mediante URL

La clase URLLa clase URL

Page 25: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

2525

URL urlobj = new URL(...);URL urlobj = new URL(...);InputStreamInputStream in = in = urlobj.urlobj.openStreamopenStream();();

// lectura del canal haciendo// lectura del canal haciendo// uso de un filtro// uso de un filtroBufferedReader c=new BufferedReader c=new BufferedReader(new BufferedReader(new InputStreamReader(in));InputStreamReader(in));

String linea=c.readLine();String linea=c.readLine();

3 . Conexión mediante URL

Lectura desde un Lectura desde un URLURL

Page 26: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

2626

public class ReadUrlpublic class ReadUrl{public static void readOut( String url, {public static void readOut( String url, OutputStream out){OutputStream out){try{try{

URL urlobj = new URL(url);URL urlobj = new URL(url);InputStream in = InputStream in =

urlobj.openStream();urlobj.openStream();int cint cWhile ((c=in.read())>-1)While ((c=in.read())>-1)

out.write(c);out.write(c);in.close();in.close();

}catch(MalformedURLExection e){;}}catch(MalformedURLExection e){;} catch(IOExection e){;}catch(IOExection e){;} }}}}

3 . Conexión mediante URL

EjemploEjemplo

Page 27: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

2727

En general se debe enviar primero En general se debe enviar primero información de consulta antes de información de consulta antes de recuperar los datos de la URL. Los pasos recuperar los datos de la URL. Los pasos son los siguientes:son los siguientes:– Establecer un objeto URLConnection, a partir Establecer un objeto URLConnection, a partir

de la URL.de la URL.– Establecer los parámetros de la conexión Establecer los parámetros de la conexión

deseadadeseada– Conectarse con el URL destinoConectarse con el URL destino– Escribir los datos de consulta de la conexiónEscribir los datos de consulta de la conexión– Leer la respuesta.Leer la respuesta.

3 . Conexión mediante URL

Comunicación con un Comunicación con un URLURL

Page 28: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

2828

El método openConnection crea y devuelve un objeto El método openConnection crea y devuelve un objeto URLConnection para lectura y escritura o ambas.URLConnection para lectura y escritura o ambas.

URLConnection connection = urlobj.openConnection();URLConnection connection = urlobj.openConnection();

Activar la escrituraActivar la escrituraconnection.setdoOutput(true);connection.setdoOutput(true);connection.connect();connection.connect();

Ahora se puede escribir al URL, utilizando OutputStream de Ahora se puede escribir al URL, utilizando OutputStream de la conexión o leer con InputSream.la conexión o leer con InputSream.

//escritura//escrituraOutputStream out= connection.getOutputStream();OutputStream out= connection.getOutputStream();// lectura// lecturaInputStream in= connection.getInputStream();InputStream in= connection.getInputStream();

3 . Conexión mediante URL

La clase URLConnectionLa clase URLConnection

Page 29: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

2929

En una conexión de url también se puede leer el En una conexión de url también se puede leer el encabezado del mensaje enviado por el servidor (http).encabezado del mensaje enviado por el servidor (http).– getContentEncodinggetContentEncoding– getContentLengthgetContentLength– getDategetDate– getLastModifedgetLastModifed– --......

Al escribir en una conexión URLConnection se envián datos Al escribir en una conexión URLConnection se envián datos a un servidor mediante una consulta Post. Una consulta a un servidor mediante una consulta Post. Una consulta Post incluye:Post incluye:– Un URL que especifica un programa cgi.Un URL que especifica un programa cgi.– Encabezados Content-Type y Content-LengthEncabezados Content-Type y Content-Length– Un cuerpo del mensajeUn cuerpo del mensaje

Nos debemos preocupar solo del cuerpo del mensaje.Nos debemos preocupar solo del cuerpo del mensaje.(convención form de html). Clase URLEncoder y (convención form de html). Clase URLEncoder y URLDecoder (UTF-8).URLDecoder (UTF-8).

3 . Conexión mediante URL

La clase URLConnectionLa clase URLConnection

Page 30: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

3030

Ejemplo. El siguiente código se conecta al recurso Ejemplo. El siguiente código se conecta al recurso import java.io.*;import java.io.*; import java.net.*;import java.net.*;

public class ReverseTest {public class ReverseTest { public static void main(String[] args) {public static void main(String[] args) { try {try { if (args.length != 1) {if (args.length != 1) { System.err.println("Usage: java ReverseTest System.err.println("Usage: java ReverseTest

string_to_reverse");string_to_reverse"); System.exit(1);System.exit(1); }} String stringToReverse = URLEncoder.encode(args[0]);String stringToReverse = URLEncoder.encode(args[0]);

URL url = new URL("http://java.sun.com/cgi-bin/backwards");URL url = new URL("http://java.sun.com/cgi-bin/backwards"); URLConnection connection = url.openConnection();URLConnection connection = url.openConnection(); connection.setDoOutput(true);connection.setDoOutput(true);

3 . Conexión mediante URL

La clase URLConnectionLa clase URLConnection

Page 31: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

3131

PrintWriter writer = new PrintWriter(connection.getOutputStream());PrintWriter writer = new PrintWriter(connection.getOutputStream()); writer.println("string=" + stringToReverse);writer.println("string=" + stringToReverse); writer.close();writer.close();

BufferedReader reader = new BufferedReader(BufferedReader reader = new BufferedReader( new new

InputStreamReader(connection.getInputStream()));InputStreamReader(connection.getInputStream())); String inputLine;String inputLine;

while ((inputLine = reader.readLine()) != null) {while ((inputLine = reader.readLine()) != null) { System.out.println(inputLine);System.out.println(inputLine); }} reader.close();reader.close(); } catch (MalformedURLException me) {} catch (MalformedURLException me) { System.err.println("MalformedURLException: " + me);System.err.println("MalformedURLException: " + me); } catch (IOException ioe) {} catch (IOException ioe) { System.err.println("IOException: " + ioe);System.err.println("IOException: " + ioe); }} }} }}

3 . Conexión mediante URL

La clase URLConnectionLa clase URLConnection

Page 32: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

3232

En su tránsito por distintas redes y equipos En su tránsito por distintas redes y equipos encaminadores, puede ocurrir que haya paquetes IP que se encaminadores, puede ocurrir que haya paquetes IP que se pierdan, lleguen duplicados o con errores en la información pierdan, lleguen duplicados o con errores en la información que contienen. que contienen.

El protocolo TCP se encarga de subsanar estas posibles El protocolo TCP se encarga de subsanar estas posibles deficiencias para conseguir un servicio de transporte de deficiencias para conseguir un servicio de transporte de información fiable. TCP fragmenta la información a información fiable. TCP fragmenta la información a transmitir, de la misma forma que lo hace el protocolo IP. transmitir, de la misma forma que lo hace el protocolo IP.

TCP numera cada uno de estos paquetes de manera que el TCP numera cada uno de estos paquetes de manera que el receptor de la información pueda ordenarlos al recibirlos. receptor de la información pueda ordenarlos al recibirlos. Para pasar esta información a través de la red, TCP utiliza Para pasar esta información a través de la red, TCP utiliza un sobre identificado con el número de secuencia de cada un sobre identificado con el número de secuencia de cada paquete. paquete.

Los paquetes TCP se envían a su destino, Los paquetes TCP se envían a su destino, independientemente unos de otros, utilizando el protocolo independientemente unos de otros, utilizando el protocolo IP. IP.

4 . Conexión mediante TCP/IP

Protocolo de control de Protocolo de control de la transmisión (TCP)la transmisión (TCP)

Page 33: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

3333

En la parte receptora, el TCP recoge el paquete, extrae los datos, En la parte receptora, el TCP recoge el paquete, extrae los datos, y los pone en el orden correcto. Si algunos sobres desaparecen, el y los pone en el orden correcto. Si algunos sobres desaparecen, el receptor le pide al transmisor que retransmita los paquetes de receptor le pide al transmisor que retransmita los paquetes de nuevo. Cuando toda la información recogida esta en su orden, se nuevo. Cuando toda la información recogida esta en su orden, se pasan los datos a la capa de aplicaciones. pasan los datos a la capa de aplicaciones.

Esto es una visión ideal del TCP. En la práctica los paquetes no Esto es una visión ideal del TCP. En la práctica los paquetes no solamente se pueden perder, sino que pueden sufrir cambios en solamente se pueden perder, sino que pueden sufrir cambios en su transito por la red. TCP resuelve este problema colocando en el su transito por la red. TCP resuelve este problema colocando en el paquete que se envía lo que se denomina el "checksum". paquete que se envía lo que se denomina el "checksum".

Cuando el paquete llega a su destino, el receptor TCP calcula que Cuando el paquete llega a su destino, el receptor TCP calcula que checksum debe ser y lo compara con el que se ha enviado. Si no checksum debe ser y lo compara con el que se ha enviado. Si no son los mismos el TCP receptor entiende que ha habido un error son los mismos el TCP receptor entiende que ha habido un error en la transmisión y le pide al transmisor que reenvíe. en la transmisión y le pide al transmisor que reenvíe.

De esta forma el TCP ofrece un servicio fiable de transmisión de De esta forma el TCP ofrece un servicio fiable de transmisión de información. Todas las aplicaciones de la Internet utilizan los información. Todas las aplicaciones de la Internet utilizan los servicios de transporte TCP para el intercambio de información, servicios de transporte TCP para el intercambio de información, de forma que pueden ignorar los problemas de envío de de forma que pueden ignorar los problemas de envío de información a través de la red, o al menos muchos de ellos. información a través de la red, o al menos muchos de ellos.

4 . Conexión mediante TCP/IP

Protocolo de control de Protocolo de control de la transmisión (TCP)la transmisión (TCP)

Page 34: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

3434

Establecer una conexión TCP requiere gran cantidad de Establecer una conexión TCP requiere gran cantidad de información en las cabeceras de los paquetes y en consecuencia información en las cabeceras de los paquetes y en consecuencia retrasos en la transmisión.retrasos en la transmisión.

Si se quiere enviar un paquete y no se requiere una particular Si se quiere enviar un paquete y no se requiere una particular precaución en el reparto del mismo entonces se pude usar otro precaución en el reparto del mismo entonces se pude usar otro protocolo que sea mas simple que el TCP.protocolo que sea mas simple que el TCP.

En este caso se usa el "protocolo de datagramas del usuario En este caso se usa el "protocolo de datagramas del usuario (UDP) que se utiliza en vez del TCP en algunas aplicaciones. (UDP) que se utiliza en vez del TCP en algunas aplicaciones.

UDP es mas simple que el TCP porque no se preocupa de UDP es mas simple que el TCP porque no se preocupa de mensajes que se pierdan, mantener el orden en los paquetes que mensajes que se pierdan, mantener el orden en los paquetes que se envían, etc... UDP se usa para programas que sólo envían se envían, etc... UDP se usa para programas que sólo envían mensajes cortos, y pueden reenviar el mensaje si una respuesta mensajes cortos, y pueden reenviar el mensaje si una respuesta no se produce en período corto de tiempo. no se produce en período corto de tiempo.

El UDP también se utiliza en el entorno de la red local donde la El UDP también se utiliza en el entorno de la red local donde la tasa de errores de transmisión es muy pequeña, y no es tasa de errores de transmisión es muy pequeña, y no es necesario el sofisticado control de errores del protocolo TCP. necesario el sofisticado control de errores del protocolo TCP.

4 . Conexión mediante TCP/IP

Protocolo de Protocolo de datagramas de usuario datagramas de usuario (UDP)(UDP)

Page 35: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

3535

TCP proporciona un canal de comunicación fiable punto a punto, se usa para aplicaciones cliente-servidor.

Las clases Socket y ServerSocket del paquete java.net proporcionan un canal de comunicación independiente del sistema utilizando TCP.

Un socket es un punto final en un enlace de comunicación de dos vías entre dos programas que se ejecutan en la red. Las clases Socket son utilizadas para representar conexiones entre un programa cliente y otro programa servidor.

El paquete java.net proporciona dos clases -- Socket y ServerSocket -- que implementan los lados del cliente y del servidor de una conexión, respectivamente.

4 . Conexión mediante TCP/IP

Sockets (conectores)

Page 36: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

3636

En primer lugar, se crea un socket en el servidor de manera que los clientes puedan establecer un flujo con él.

El servidor se queda esperando al cliente (método accept)

El cliente ya puede crear un socket y establecer un flujo con el servidor a través de él utilizando el flujo creado, cliente y servidor pueden utilizar métodos de lectura y escritura para recibir y enviar datos

Para crear un socket Java, necesitamos una dirección Internet válida y un número válido de puerto

Un servidor es un programa Java que proporciona un socket en el puerto en cuestión

4 . Conexión mediante TCP/IP

Creación de conexiones

Page 37: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

3737

4 . Conexión mediante TCP/IP

Establecimiento de comunicaciones

Puerto destino

Nodo destino

Programa cliente Programa servidor

Puerto

Socket

2.-accept3.-instanciación

6.-Comunicación

Socket

ServerSocket

Puerto destino

1.-instanciación

4.-Conexión TCP5.-return del accept

Page 38: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

3838

Creación de socket servidorServerSocket oyente = new ServerSocket(puerto);

Espera del servidorSocket ss = oyente.accept();

Creación de socket clienteSocket sc = new Socket

(InetAddress maquina_servidora, int puerto); Flujos para sockets

DataInputStream nombreFlujoEntrada = new DataInputStream (sc.getInputStream());

DataOutputStream nombreFlujoSalida = new DataOutputStream (ss.getOutputStream());

Operaciones de lectura/escritura sobre:nombreFlujoEntrada y nombreFlujoSalida

4 . Conexión mediante TCP/IP

Creación de conexiones

Page 39: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

3939

import java.net.Socket;import java.io.*;import java.net.UnknownHostException;

public class TCPClienteHolaMundo {

public static void main(String[] args) { OutputStream FlujoDeSalida; InputStream FlujoDeEntrada; try { Socket SocketCliente = new Socket("localhost", 8000);

FlujoDeSalida = SocketCliente.getOutputStream(); OutputStreamWriter CanalS = new

OutputStreamWriter(FlujoDeSalida); PrintWriter CanalSalida = new PrintWriter(CanalS,true);

4 . Conexión mediante TCP/IP

Ejemplo. Cliente hola mundo.

Page 40: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

4040

System.out.println("enviando texto"); CanalSalida.println("Hola Mundo");

FlujoDeEntrada = SocketCliente.getInputStream(); InputStreamReader CanalE = new

InputStreamReader(FlujoDeEntrada); BufferedReader CanalEntrada = new BufferedReader(CanalE); String inputLine; System.out.println("esperando respuesta"); inputLine = CanalEntrada.readLine(); System.out.println(inputLine);

4 . Conexión mediante TCP/IP

Ejemplo. Cliente hola mundo.

Page 41: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

4141

CanalSalida.close(); CanalEntrada.close(); SocketCliente.close();

} catch (UnknownHostException e) { System.out.println("Referencia a host no resuelta"); } catch (IOException e) { System.out.println("Error en las comunicaciones"+e); } catch (SecurityException e) { System.out.println("Comunicacion no permitida por razones

de seguridad"); }}}

4 . Conexión mediante TCP/IP

Ejemplo. Cliente hola mundo.

Page 42: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

4242

public class TCPServidorHolaMundo {

public static void main(String[] args) { InputStream FlujoDeEntrada; OutputStream FlujoDeSalida; try { ServerSocket SocketServidor = new ServerSocket(8000); Socket ComunicaConCliente = SocketServidor.accept(); System.out.println("Comunicacion establecida"); FlujoDeEntrada = ComunicaConCliente.getInputStream(); InputStreamReader CanalE = new InputStreamReader(FlujoDeEntrada); BufferedReader CanalEntrada = new BufferedReader(CanalE); String inputLine; inputLine = CanalEntrada.readLine(); System.out.println(inputLine);

4 . Conexión mediante TCP/IP

Ejemplo. Servidor hola mundo.

Page 43: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

4343

FlujoDeSalida = ComunicaConCliente.getOutputStream(); OutputStreamWriter CanalS = new

OutputStreamWriter(FlujoDeSalida); PrintWriter CanalSalida = new PrintWriter(CanalS,true);

System.out.println("Mandando respuesta"); CanalSalida.println("hola mundo de nuevo"); System.out.println("hola mundo de nuevo"); CanalSalida.close();

4 . Conexión mediante TCP/IP

Ejemplo. Servidor hola mundo.

Page 44: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

4444

CanalEntrada.close(); ComunicaConCliente.close(); SocketServidor.close();

} catch (IOException e) { System.out.println("Error en las comunicaciones"+e); System.exit(0); } catch (SecurityException e) { System.out.println("Comunicacion no permitida por razones de

seguridad"); System.exit(0); }}}

4 . Conexión mediante TCP/IP

Ejemplo. Servidor hola mundo.

Page 45: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

4545

En la transmisión sin conexión En la transmisión sin conexión con Datagramas, un mensaje se con Datagramas, un mensaje se divide o puede dividirse en varios divide o puede dividirse en varios fragmentos que pueden llegar en fragmentos que pueden llegar en orden, en desorden, o no llegar.orden, en desorden, o no llegar.

Este protocolo proporciona Este protocolo proporciona comunicaciones no fiables, no comunicaciones no fiables, no esta orientado a conexión y por lo esta orientado a conexión y por lo tanto Java no asocia los Streams tanto Java no asocia los Streams a los datagramas. a los datagramas.

5 . Conexión mediante UDP/IP

UDP (User Datagram Protocol)

Page 46: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

4646

Puesto que en la cabecera de un Puesto que en la cabecera de un paquete se incluye el protocolo paquete se incluye el protocolo utilizado, los programas asociados a utilizado, los programas asociados a cada protocolo se diferencian entre cada protocolo se diferencian entre sí, y pueden utilizar el mismo rango sí, y pueden utilizar el mismo rango de puertos. .de puertos. .

En la cabecera de un paquete UDP En la cabecera de un paquete UDP se incluye un campo de redundancia se incluye un campo de redundancia para que en el destino se para que en el destino se compruebe la integridad de los compruebe la integridad de los datos. datos.

5 . Conexión mediante UDP/IP

UDP (User Datagram Protocol)

Page 47: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

4747

Cuando a un programa le llega un Cuando a un programa le llega un Datagrama, necesita saber la dirección Datagrama, necesita saber la dirección y el puerto del programa origen para y el puerto del programa origen para saber dónde debe contestar.saber dónde debe contestar.

Cada mensaje UDP puede albergar Cada mensaje UDP puede albergar hasta 508 bytes.hasta 508 bytes.

Java proporciona dos clases para el Java proporciona dos clases para el uso del protocolo:uso del protocolo:– DatagramSocketDatagramSocket– DatagramPacketDatagramPacket

5 . Conexión mediante UDP/IP

UDP (User Datagram Protocol)

Page 48: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

4848

5 . Conexión mediante UDP/IP

Establecimiento de comunicaciones

Puerto destino

Nodo destino

Programa cliente Programa servidor

Puerto destino

DatagramSocket

DatagramSocket

1.-new DatagramSocket

4.-new DatagramPacket

3.-recive

2.-new DatagramPacket

6.-send

5.-new DatagramSocket

Page 49: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

4949

La clase DatagramPacket se usa para crear los La clase DatagramPacket se usa para crear los paquetes utilizados para enviar y/o recibir informaciónpaquetes utilizados para enviar y/o recibir información

En su construcción distinguimos entre la recepción y En su construcción distinguimos entre la recepción y el envío de paquetes.el envío de paquetes.

Paquetes para recepción de datos:Paquetes para recepción de datos:

DatagramPacket (byte buf[], int longitud)DatagramPacket (byte buf[], int longitud)

Paquetes para envío de datos:Paquetes para envío de datos:

DatagramPacket (byte buf[],int longitud, DatagramPacket (byte buf[],int longitud, InetAddress dir, InetAddress dir,

int puerto)int puerto)

5 . Conexión mediante UDP/IP

DatagramPacket

Page 50: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

5050

Métodos de acceso al estado Métodos de acceso al estado interno de un DatagramPacket:interno de un DatagramPacket:InetAddress getAddress()InetAddress getAddress()

int getPort()int getPort()

byte[] getData() byte[] getData()

int getLength() int getLength()

5 . Conexión mediante UDP/IP

DatagramPacket

Page 51: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

5151

Sockets para enviar y recibir paquetesSockets para enviar y recibir paquetes

DatagramSocket()DatagramSocket() establece un socket (que establece un socket (que le asigna el computador) por el que se le asigna el computador) por el que se enviarán paquetes a la red enviarán paquetes a la red

DatagramSocket(int numPuerto)DatagramSocket(int numPuerto) recibe un recibe un argumento entero para establecer un puerto argumento entero para establecer un puerto por el que se recibirán paquetes de la red por el que se recibirán paquetes de la red

Si no se logra establecer un DatagramSocket Si no se logra establecer un DatagramSocket se lanzará una se lanzará una SocketExceptionSocketException..

5 . Conexión mediante UDP/IP

DatagramSocket

Page 52: 1 TEMA 3. Programación en red 1.Introducción 2.Dirección IP. Clase InetAddress 3.Conexión mediante URL. 4.Conexión mediante TCP/IP 5.Conexión mediante

5252

Métodos de la clase DatagramSocket:Métodos de la clase DatagramSocket:

void receive (DatagramPacket p):void receive (DatagramPacket p): se bloquea hasta que llega un paquete se bloquea hasta que llega un paquete y luego almacena el paquete en su y luego almacena el paquete en su argumento p.argumento p.

void send (DatagramPacket p):void send (DatagramPacket p): envía un paquete p por la red (Si envía un paquete p por la red (Si ocurre algún error al enviar o recibir ocurre algún error al enviar o recibir paquetes se lanza una IOException)paquetes se lanza una IOException)

5 . Conexión mediante UDP/IP

DatagramSocket