Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16:...

38
Área de Ingeniería Telemática Área de Ingeniería Telemática 1 Universidad de Sevilla Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red Tema 16: Comunicaciones en Red

Transcript of Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16:...

Page 1: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

1

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

Tema 16: Comunicaciones en RedTema 16: Comunicaciones en Red

Page 2: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

2

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

ÍndiceÍndice

Introducción.Introducción. Socket. Socket. URL.URL. Datagramas.Datagramas.

Page 3: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

3

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

IntroducciónIntroducción

Se puede realizar con cualquier lenguajeSe puede realizar con cualquier lenguaje java.netjava.net Las clases encapsulan el paradigma de “socket” Las clases encapsulan el paradigma de “socket”

(conectores) creados por BSD (Berkeley Software (conectores) creados por BSD (Berkeley Software Distribution) en la Universidad de Berkeley.Distribution) en la Universidad de Berkeley.

UNIX 4.2BSD (Bill Joy, en Sun Microsystems).UNIX 4.2BSD (Bill Joy, en Sun Microsystems). Los programas Java están en la capa de aplicación.Los programas Java están en la capa de aplicación. Pasos: Abrir, leer/escribir, cerrar.Pasos: Abrir, leer/escribir, cerrar.

Page 4: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

4

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

TCP (Transport Control Protocol)TCP (Transport Control Protocol)

Comunicaciones fiables, establecen una conexión y Comunicaciones fiables, establecen una conexión y comunicaciones en ambos sentidos.comunicaciones en ambos sentidos.

El orden en que se envían y reciben los datos es crítico.El orden en que se envían y reciben los datos es crítico. Servicio telefónico.Servicio telefónico. Ejemplos:Ejemplos:

HTTP (Hypertext Transfer Protocol)HTTP (Hypertext Transfer Protocol) FTP (File Transfer Protocol)FTP (File Transfer Protocol) TelnetTelnet

Clases: Clases: URLURL, , URLConnectionURLConnection, , SocketSocket y y ServerSocket.ServerSocket.

Page 5: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

5

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

UDP (User Datagram Protocol)UDP (User Datagram Protocol)

No está orientado a conexión. No se garantiza la No está orientado a conexión. No se garantiza la entrega.entrega.

Servicio postal.Servicio postal. Los paquetes de datos: Los paquetes de datos: datagramasdatagramas.. Clases: Clases: DatagramPacketDatagramPacket, , DatagramSocketDatagramSocket y y

MulticastSocketMulticastSocket..

Page 6: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

6

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

PuertosPuertos

Distingue la aplicación dentro de la máquina.Distingue la aplicación dentro de la máquina. Los datos van acompañados de Los datos van acompañados de

la dirección de la computadora (32 bits)la dirección de la computadora (32 bits) el puerto al que va destinado (16 bits)el puerto al que va destinado (16 bits)

Rango para los puertos: 0-65535Rango para los puertos: 0-65535

Page 7: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

7

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

ServidorServidorServidorServidor PuertoPuertoPuertoPuerto ClienteClienteClienteCliente

Page 8: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

8

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

TCP o UDPTCP o UDP

Aplic.Aplic.Aplic.Aplic. Aplic.Aplic.Aplic.Aplic. Aplic.Aplic.Aplic.Aplic. Aplic.Aplic.Aplic.Aplic.

puertopuerto puertopuerto puertopuerto puertopuerto

DatosDatos#puerto#puertoDatosDatos

Page 9: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

9

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

Conectores reservadosConectores reservados

13/udp13/udp daytime

PuertoPuerto ServicioServicio

23 /tcp23 /tcp telnet25 /tcp25 /tcp E-mail79 /tcp79 /tcp finger80 /tcp80 /tcp HTTP119 /tcp119 /tcp netnews

TCP/IP reserva los primeros 1024 para sus protocolos TCP/IP reserva los primeros 1024 para sus protocolos específicos.específicos.

21/tcp21/tcp ftp

Page 10: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

10

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

Servicio de nombres de Dominio (DNS)Servicio de nombres de Dominio (DNS)

Existe una jerarquía de nombres asociada a los Existe una jerarquía de nombres asociada a los números que representan las direcciones que se números que representan las direcciones que se conoce como DNS.conoce como DNS.

Permite teclear www.yahoo.com en vez de Permite teclear www.yahoo.com en vez de 205.216.146.71.205.216.146.71.

Page 11: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

11

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

AplicaciónAplicación(HTTP, ftp, telnet, ...)(HTTP, ftp, telnet, ...)

AplicaciónAplicación(HTTP, ftp, telnet, ...)(HTTP, ftp, telnet, ...)

TransporteTransporte(TCP, UDP, ...)(TCP, UDP, ...)

TransporteTransporte(TCP, UDP, ...)(TCP, UDP, ...)

RedRed(IP, ...)(IP, ...)

RedRed(IP, ...)(IP, ...)

EnlaceEnlace(dispositivo driver, ...)(dispositivo driver, ...)

EnlaceEnlace(dispositivo driver, ...)(dispositivo driver, ...)

Page 12: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

12

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

El paquete java.net (I)El paquete java.net (I)

SocketSocket Implementa un cliente Socket.Implementa un cliente Socket.

ServerSocketServerSocket Implementa un servidor Socket.Implementa un servidor Socket.

SocketImplSocketImpl Clase abstracta.Clase abstracta.

SocketPermissionSocketPermission Acceso a la red vía socketAcceso a la red vía socket

Page 13: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

13

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

El paquete java.net (II)El paquete java.net (II)

URLURL Puntero a un recurso en la world wide webPuntero a un recurso en la world wide webPuntero a un recurso en la world wide webPuntero a un recurso en la world wide web

URLConnectionURLConnection Clase abstracta. Superclase para comunic. entre aplic y URL.Clase abstracta. Superclase para comunic. entre aplic y URL.

URLClassLoaderURLClassLoader Carga clases y recursosCarga clases y recursosCarga clases y recursosCarga clases y recursos

URLDecoderURLDecoder Convierte el formato MIME en StringConvierte el formato MIME en String

URLEncoderURLEncoder Convierte el formato String en MIMEConvierte el formato String en MIMEConvierte el formato String en MIMEConvierte el formato String en MIME

URLStreamHandlerURLStreamHandler Clase abstracta.Clase abstracta.

HttpURLConnectionHttpURLConnection Un URLConnection con soporte para características http.Un URLConnection con soporte para características http.

JarURLConnectionJarURLConnection Uso de archivos JARUso de archivos JARUso de archivos JARUso de archivos JAR

ContentHandlerContentHandler Clase abstracta.Clase abstracta.Clase abstracta.Clase abstracta.

Page 14: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

14

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

El paquete java.net (III)El paquete java.net (III)

MulticastSocketMulticastSocket Tx/Rx de paquetes IP multicast.Tx/Rx de paquetes IP multicast.Tx/Rx de paquetes IP multicast.Tx/Rx de paquetes IP multicast.

DatagramPacketDatagramPacket Clase que representa un datagrama.Clase que representa un datagrama.

DatagramSocketDatagramSocket Tx/Rx de datagramas en un socket.Tx/Rx de datagramas en un socket.

Page 15: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

15

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

El paquete java.net (y IV)El paquete java.net (y IV)

InetAddressInetAddress Respresenta una dirección de IP.Respresenta una dirección de IP.

AuthenticatorAuthenticator Autentificación para una conexión a la red.Autentificación para una conexión a la red.Autentificación para una conexión a la red.Autentificación para una conexión a la red.

NetPermissionNetPermission Clase para permisos en la red.Clase para permisos en la red.Clase para permisos en la red.Clase para permisos en la red.

PasswordAuthenticationPasswordAuthentication Para autentificaciónPara autentificaciónPara autentificaciónPara autentificación

Page 16: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

16

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

InetAddressInetAddress

Encapsula direcciones IP y sus nombres.Encapsula direcciones IP y sus nombres. No tiene constructores visibles, pero se proporcionan métodos No tiene constructores visibles, pero se proporcionan métodos

estáticos.estáticos.

static InetAddress getLocalHost() Devuelve el objeto que representa al nodo local.

static InetAddress getByName(String nomNodo) Devuelve el nombre del nodo que se le pasa. Puede lanzar UnknownHostException (excepción de nodo

desconocido). static InetAddress[] getAllByName(String nomNod)

devuelve una matriz que representa todas las direcciones en las que se traduce un nombre dado.

Puede lanzar UnknownHostException.

Page 17: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

17

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

import java.net.InetAddress;

class dire{ public static void main(String args[]) {

InetAddress direccion;try{

direccion = InetAddress.getLocalHost();System.out.println(direccion);System.out.println();

direccion = InetAddress.getByName("trajano.us.es");System.out.println(direccion);System.out.println();InetAddress SW[] = InetAddress.getAllByName("trajano.us.es");for(int i = 0; i<SW.length; i++)

System.out.println(SW[i]);}catch (Exception e){

System.out.println("Error en ejecución: "+e);}

}}/*[16]-adriano:Mon> java direadriano/193.147.162.138

trajano.us.es/193.147.162.130

trajano.us.es/193.147.162.130 [17]-adriano:Mon> */

Page 18: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

18

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

Métodos no estáticosMétodos no estáticos

String getHostName() Devuelve como cadena el nombre del nodo.

byte[] getAddress() Devuelve una matriz de bytes de cuatro elementos que

representa la dirección en Internet del objeto en el "orden de bytes de la red".

String toString() Devuelve el nombre del nodo y la dirección IP. Ejemplo,

"starwave.com/192.147.170.6".

boolean equals(InetAddress otroNodo) Devuelve true si los objeto tiene la misma dirección.

Page 19: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

19

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

SocketSocket

SocketSocket: Comunic. de bajo nivel.: Comunic. de bajo nivel. URLURL y y URLConnectionURLConnection: Comunic. de alto nivel.: Comunic. de alto nivel. Sobre TCP, cada programa establece una conexión (cliente-Sobre TCP, cada programa establece una conexión (cliente-

servidor) y va ligado a un socket.servidor) y va ligado a un socket. Los socket son puntos finales del enlace.Los socket son puntos finales del enlace. Los procesos los trata como descriptores de ficheros.Los procesos los trata como descriptores de ficheros. El Cliente conoce:El Cliente conoce:

el nombre la máquina servidorael nombre la máquina servidora número de puerto al que está conectadonúmero de puerto al que está conectado

El Servidor:El Servidor: Acepta la conexiónAcepta la conexión

Page 20: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

20

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

Modelo de ComunicacionesModelo de Comunicaciones

ServidorServidor ClienteCliente

ServerSocket(#port)ServerSocket(#port)

accept()accept()Socket(host,#port)Socket(host,#port)

OutputStream OutputStream

InputStreamInputStream

OutputStream OutputStream

InputStreamInputStream

close()close() close()close()

Page 21: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

21

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

Constructores para el clienteConstructores para el cliente

Cuando se crea un objeto Socket, se establece una Cuando se crea un objeto Socket, se establece una conexión entre cliente y servidor.conexión entre cliente y servidor.

Socket(String nodo, int puerto) Crea un conector que conecta el nodo local con el

nodo y puerto especificados.

Socket(InetAddress dirección, int puerto) Crea un conector utilizando un objeto InetAddress

ya existente y un puerto. En total son 8 constructores (versión 1.2).

Puede lanzar UnknownHostException o IOException.

Page 22: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

22

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

Información del Socket y flujosInformación del Socket y flujos

InetAddress getInetAddress() Devuelve la InetAddress asociada con el objeto Socket.

int getPort() Devuelve el puerto remoto al que está conectado este objeto Socket.

int getLocalPort() Devuelve el puerto local al que está conectado este objeto Socket.

InputStream getInputStream() Devuelve el InputStream (flujo de entrada) asociado con este conector.

OutputStream getOutputStream() Devuelve el OutputStream (flujo de salida) asociado con este conector.

void close() Cierra el InputStream y el OutputStream.

Page 23: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

23

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

Constructores para el ServidorConstructores para el Servidor

ServerSocket(int puerto) Crea un conector en el servidor en un puerto

específico.

ServerSocket(int puerto, int backlog) Se configura la longitud máx. de la cola de entrada.

ServerSocket(int port, int backlog, InetAddress dir) Ligada a una dirección.

Page 24: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

24

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

Creación de flujos de EntradaCreación de flujos de Entrada

En el clienteEn el cliente se crea un flujo de entrada para recibir se crea un flujo de entrada para recibir las respuestas del servidor (las respuestas del servidor (DataInputStreamDataInputStream))

Socket sock = new Socket(“host”,puerto);Socket sock = new Socket(“host”,puerto);

DataInputStream in = new DataInputStream(DataInputStream in = new DataInputStream(sock.getInputStream()sock.getInputStream());); DataInputStreamDataInputStream tiene métodos como tiene métodos como read()read(), ,

readLine()readLine(), , readChar(), readInt()readChar(), readInt(), …, … En el servidorEn el servidor también, para recibir a los clientes también, para recibir a los clientesServerSocket sock = new ServerSocket(puerto);ServerSocket sock = new ServerSocket(puerto);

Page 25: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

25

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

Creación de flujos de SalidaCreación de flujos de Salida

En el clienteEn el cliente se crea un flujo de salida para enviar se crea un flujo de salida para enviar información al servidor (información al servidor (DataOutputStreamDataOutputStream o o PrintStreamPrintStream))

PrintStream out = new PrintStream(PrintStream out = new PrintStream(sock.getOutputStream()sock.getOutputStream()););

DataOutputStream out = new DataOutputStream out = new DataInputStream(DataInputStream(sock.getOutputStream()sock.getOutputStream()););

PrintStreamPrintStream tiene los métodos tiene los métodos writewrite y y printlnprintln.. DataOutputStreamDataOutputStream escribe los datos primarios y escribe los datos primarios y

writeByteswriteBytes.. En el servidorEn el servidor se envía información al cliente se envía información al clientePrintStream out = new PrintStream(PrintStream out = new PrintStream(sock.getOutputStream()sock.getOutputStream()););

Page 26: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

26

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

import java.net.*;import java.io.*;

class Whois{ public static void main(String args[]) throws Exception{

int c;Socket s = new Socket("intermic.net",43);InputStream in = s.getInputStream();OutputStream out = s.getOutputStream();String str = (args.length==0 ? ”starwave.com”: args[0]+"\n”);byte buf[] = new byte[str.length()];

str.getBytes(0,str.length(), buf, 0 );out.write(buf);while((c = in.read()) != -1) {

System.out.println((char)c);}s.close();in.close();out.close();

}}

Page 27: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

27

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

import java.io.*;import java.net.*;

public class EchoClient { public static void main(String[] args) throws IOException {

Socket echoSocket = null; PrintWriter out = null; BufferedReader in = null;

try {

echoSocket = new Socket("adriano", 7);//crea un socket// dos siguientes lineas son para leer/escribir en socket

out = new PrintWriter(echoSocket.getOutputStream(), true); in = new BufferedReader(new

InputStreamReader(echoSocket.getInputStream()));

} catch (UnknownHostException e) { System.err.println("No conoce el host: adriano."); } catch (IOException e) { System.err.println("Error E/S en la conexion: adriano."); }

Continúa ...Continúa ...

Page 28: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

28

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

if(echoSocket!=null&& in!=null && out!=null){BufferedReader stdIn = new BufferedReader(new

InputStreamReader(System.in));String userInput;

while ((userInput = stdIn.readLine()) != null) { out.println(userInput); System.out.println("echo: " + in.readLine());}

out.close();in.close();stdIn.close();echoSocket.close();

} }}

Continuación …Continuación …

Page 29: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

29

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

Referencia (dirección) de un recurso de Internet.Referencia (dirección) de un recurso de Internet.

Protocolos: HTTP, FTP, Gopher, File y News.Protocolos: HTTP, FTP, Gopher, File y News. Nombre del recurso:Nombre del recurso:

URL (Uniform Resource Locator)URL (Uniform Resource Locator)

httphttp://java.sun.com://java.sun.com

Identificador de protocoloIdentificador de protocolo

Nombre del recursoNombre del recurso

Nombre hostNombre host Nombre de la máquina en la que está el recurso.Nombre de la máquina en la que está el recurso.

Nombre ficheroNombre fichero Nombre del camino al fichero en la máquina.Nombre del camino al fichero en la máquina.

Número de PuertoNúmero de Puerto Puerto al que se conecta (opcional).Puerto al que se conecta (opcional).

ReferenciaReferencia Referencia al nombre (opcional).Referencia al nombre (opcional).

Page 30: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

30

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

Constructores (I)Constructores (I)

URL absolutoURL absoluto, contiene toda la información para , contiene toda la información para alcanzar el recursoalcanzar el recurso

URLURL((StringString cadcad), ejemplo), ejemploURL gamelan = new URL("http://www.gamelan.com/");

URL relativoURL relativo, los ficheros HTML dan de forma , los ficheros HTML dan de forma relacionada con el fichero en el que están.relacionada con el fichero en el que están.

URLURL((URL URL base base ,String,String relativorelativo), ejemplo), ejemploURL game = new URL("http://www.gamelan.com/pages/");

URL gamelan = new URL(game,”Gamelan.html");

Page 31: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

31

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

Constructores (y II)Constructores (y II)

URL(String proto, String host, int port, String file)

URL(String proto, String host, String file)

URL gam = new URL ("http", ”www.gamelan.com”, 80, "/pages/Gamelan. html");

Crea un objeto URL para el siguiente URL:Crea un objeto URL para el siguiente URL:

http://www.gamelan.com:80/pages/Gamelan.network.html MalformedURLExceptionMalformedURLException

Si el protocolo es desconocido o los argumentos del Si el protocolo es desconocido o los argumentos del constructor son incorrectos.constructor son incorrectos.

Los objetos URL se escriben una vez (no se pueden Los objetos URL se escriben una vez (no se pueden cambiar).cambiar).

Page 32: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

32

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

MétodosMétodos

String getProtocol()Devuelve el componente identificador de protocolo del URL

String getHost()Devuelve el nombre de host del URL

int getPort()Devuelve el número de puerto del componente URL. Devuelve

un entero que es el número de puerto. Si el puerto no es asignado explicitamente devuelve -1.

String getFile()Devuelve el nombre del fichero del componente del URL.

String toExternalForm()Devuelve una cadena que representa un URL.

Page 33: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

33

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

EjemploEjemplo

import java.net.*;

class Patric{ public static void main(String args[]) throws MalformedURLException{

URL hp = new URL ("http://www.starwave.com/people/naughton/");System.out.println("Protocolo: "+ hp.getProtocol());System.out.println("Puerto: "+ hp.getPort());System.out.println("Nodo: "+ hp.getHost());System.out.println("Archivo: "+ hp.getFile());System.out.println("Ext: "+ hp.toExternalForm());

}}/*Protocolo: httpPuerto: -1Nodo: www.starwave.comArchivo: /people/naughton/Ext: http://www.starwave.com/people/naughton/ */

Page 34: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

34

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

Conexión a un URLConexión a un URL

URLConnection openConnection()URLConnection openConnection()

import java.net.*;import java.io.*;

class URL0{ public static void main(String args[]) {

try{URL yahoo = new URL ("http://www.yahoo.com/");yahoo.openConnection();System.out.println("OK ");

}catch(MalformedURLException e){System.out.println("Excep: " + e);

}catch(IOException e){System.out.println("Excep: " + e);

} }}

Page 35: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

35

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

Leyendo de un URLLeyendo de un URL

InputStream openStream()InputStream openStream()

import java.net.*;import java.io.*;

class URL1{ public static void main(String args[]) throws Exception{

URL yahoo = new URL ("http://www.yahoo.com/");BufferedReader in = new BufferedReader(

new InputStreamReader(yahoo.openStream()));

String inputLine;

while((inputLine = in.readLine())!= null)System.out.println(inputLine);

in.close(); }}

Page 36: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

36

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

Leyendo de un URLConnectionLeyendo de un URLConnection

InputStream getInputStream()InputStream getInputStream()import java.net.*;import java.io.*;

class URL2{ public static void main(String args[]) throws Exception{

URL yahoo = new URL ("http://www.yahoo.com/");URLConnection yc = yahoo.openConnection();BufferedReader in = new BufferedReader(

new InputStreamReader(yc.getInputStream()));

String inputLine;

while((inputLine = in.readLine())!= null)System.out.println(inputLine);

in.close(); }}

Page 37: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

37

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

DatagramasDatagramas

Los Datagramas se implementan sobre el protocolo Los Datagramas se implementan sobre el protocolo UDP, con dos clases:UDP, con dos clases:

DatagramPacketDatagramPacket, contiene los datos, contiene los datos DatagramSocketDatagramSocket, es el mecanismo para enviar o , es el mecanismo para enviar o

recibir los recibir los DatagramPacketDatagramPacket..

Page 38: Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.

Área de Ingeniería Área de Ingeniería TelemáticaTelemática

38

Universidad de SevillaUniversidad de Sevilla

Fundamentosde Telemática

MétodosMétodos

InetAddress getAddress()InetAddress getAddress() Devuelve la dir. de destino (para envíos)Devuelve la dir. de destino (para envíos)

int getPort()int getPort() Devuelve el número de puerto.Devuelve el número de puerto.

byte[] getData()byte[] getData() Devuelve el contenido del datagramaDevuelve el contenido del datagrama

int getLength()int getLength() Devuelve la longitud de los datos válidosDevuelve la longitud de los datos válidos