La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red."— Transcripción de la presentación:

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

2 Área de Ingeniería Telemática 2 Universidad de Sevilla Fundamentos de Telemática Índice pIntroducción. pSocket. pURL. pDatagramas.

3 Área de Ingeniería Telemática 3 Universidad de Sevilla Fundamentos de Telemática Introducción pSe puede realizar con cualquier lenguaje pjava.net pLas clases encapsulan el paradigma de “socket” (conectores) creados por BSD (Berkeley Software Distribution) en la Universidad de Berkeley. pUNIX 4.2BSD (Bill Joy, en Sun Microsystems). pLos programas Java están en la capa de aplicación. pPasos: Abrir, leer/escribir, cerrar.

4 Área de Ingeniería Telemática 4 Universidad de Sevilla Fundamentos de Telemática TCP (Transport Control Protocol) pComunicaciones fiables, establecen una conexión y comunicaciones en ambos sentidos. pEl orden en que se envían y reciben los datos es crítico. pServicio telefónico. pEjemplos: l HTTP (Hypertext Transfer Protocol) l FTP (File Transfer Protocol) l Telnet pClases: URL, URLConnection, Socket y ServerSocket.

5 Área de Ingeniería Telemática 5 Universidad de Sevilla Fundamentos de Telemática UDP (User Datagram Protocol) pNo está orientado a conexión. No se garantiza la entrega. pServicio postal. pLos paquetes de datos: datagramas. pClases: DatagramPacket, DatagramSocket y MulticastSocket.

6 Área de Ingeniería Telemática 6 Universidad de Sevilla Fundamentos de Telemática Puertos pDistingue la aplicación dentro de la máquina. pLos datos van acompañados de l la dirección de la computadora (32 bits) l el puerto al que va destinado (16 bits) pRango para los puertos: 0-65535

7 Área de Ingeniería Telemática 7 Universidad de Sevilla Fundamentos de Telemática ServidorServidorPuertoPuerto ClienteCliente

8 Área de Ingeniería Telemática 8 Universidad de Sevilla Fundamentos de Telemática TCP o UDP Aplic.Aplic.Aplic.Aplic.Aplic.Aplic.Aplic.Aplic. puertopuertopuertopuerto Datos#puerto Datos

9 Área de Ingeniería Telemática 9 Universidad de Sevilla Fundamentos de Telemática Conectores reservados 13/udpdaytime PuertoServicio 23 /tcp telnet 25 /tcp E-mail 79 /tcp finger 80 /tcp HTTP 119 /tcp netnews pTCP/IP reserva los primeros 1024 para sus protocolos específicos. 21/tcpftp

10 Área de Ingeniería Telemática 10 Universidad de Sevilla Fundamentos de Telemática Servicio de nombres de Dominio (DNS) pExiste una jerarquía de nombres asociada a los números que representan las direcciones que se conoce como DNS. pPermite teclear www.yahoo.com en vez de 205.216.146.71.

11 Área de Ingeniería Telemática 11 Universidad de Sevilla Fundamentos de Telemática Aplicación (HTTP, ftp, telnet,...) Aplicación Transporte (TCP, UDP,...) Transporte Red (IP,...) Red Enlace (dispositivo driver,...) Enlace

12 Área de Ingeniería Telemática 12 Universidad de Sevilla Fundamentos de Telemática El paquete java.net (I) Socket Implementa un cliente Socket. ServerSocket Implementa un servidor Socket. SocketImpl Clase abstracta. SocketPermission Acceso a la red vía socket

13 Área de Ingeniería Telemática 13 Universidad de Sevilla Fundamentos de Telemática El paquete java.net (II) URL Puntero a un recurso en la world wide web URLConnection Clase abstracta. Superclase para comunic. entre aplic y URL. URLClassLoader Carga clases y recursos URLDecoder Convierte el formato MIME en String URLEncoder Convierte el formato String en MIME URLStreamHandler Clase abstracta. HttpURLConnection Un URLConnection con soporte para características http. JarURLConnection Uso de archivos JAR ContentHandler Clase abstracta.

14 Área de Ingeniería Telemática 14 Universidad de Sevilla Fundamentos de Telemática El paquete java.net (III) MulticastSocket Tx/Rx de paquetes IP multicast. DatagramPacket Clase que representa un datagrama. DatagramSocket Tx/Rx de datagramas en un socket.

15 Área de Ingeniería Telemática 15 Universidad de Sevilla Fundamentos de Telemática El paquete java.net (y IV) InetAddress Respresenta una dirección de IP. Authenticator Autentificación para una conexión a la red. NetPermission Clase para permisos en la red. PasswordAuthentication Para autentificación

16 Área de Ingeniería Telemática 16 Universidad de Sevilla Fundamentos de Telemática InetAddress pEncapsula direcciones IP y sus nombres. pNo tiene constructores visibles, pero se proporcionan métodos estáticos. p pstatic InetAddress getLocalHost() l l Devuelve el objeto que representa al nodo local. p pstatic InetAddress getByName(String nomNodo) l l Devuelve el nombre del nodo que se le pasa. l l Puede lanzar UnknownHostException (excepción de nodo desconocido). p pstatic InetAddress[] getAllByName(String nomNod) l l devuelve una matriz que representa todas las direcciones en las que se traduce un nombre dado. l l Puede lanzar UnknownHostException.

17 Área de Ingeniería Telemática 17 Universidad de Sevilla Fundamentos de 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 dire adriano/193.147.162.138 trajano.us.es/193.147.162.130 [17]-adriano:Mon> */

18 Área de Ingeniería Telemática 18 Universidad de Sevilla Fundamentos de Telemática Métodos no estáticos p pString getHostName() l l Devuelve como cadena el nombre del nodo. p pbyte[] getAddress() l l 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". p pString toString() l l Devuelve el nombre del nodo y la dirección IP. Ejemplo, "starwave.com/192.147.170.6". p pboolean equals(InetAddress otroNodo) l l Devuelve true si los objeto tiene la misma dirección.

19 Área de Ingeniería Telemática 19 Universidad de Sevilla Fundamentos de Telemática Socket pSocket: Comunic. de bajo nivel. pURL y URLConnection: Comunic. de alto nivel. pSobre TCP, cada programa establece una conexión (cliente-servidor) y va ligado a un socket. pLos socket son puntos finales del enlace. pLos procesos los trata como descriptores de ficheros. pEl Cliente conoce: l el nombre la máquina servidora l número de puerto al que está conectado pEl Servidor: l Acepta la conexión

20 Área de Ingeniería Telemática 20 Universidad de Sevilla Fundamentos de Telemática Modelo de Comunicaciones ServidorCliente ServerSocket(#port)accept()Socket(host,#port) OutputStreamInputStreamOutputStreamInputStream close()close()

21 Área de Ingeniería Telemática 21 Universidad de Sevilla Fundamentos de Telemática Constructores para el cliente pCuando se crea un objeto Socket, se establece una conexión entre cliente y servidor. p pSocket(String nodo, int puerto) l l Crea un conector que conecta el nodo local con el nodo y puerto especificados. p pSocket(InetAddress dirección, int puerto) l l Crea un conector utilizando un objeto InetAddress ya existente y un puerto. p pEn total son 8 constructores (versión 1.2). p pPuede lanzar UnknownHostException o IOException.

22 Área de Ingeniería Telemática 22 Universidad de Sevilla Fundamentos de Telemática Información del Socket y flujos p pInetAddress getInetAddress() l l Devuelve la InetAddress asociada con el objeto Socket. p pint getPort() l l Devuelve el puerto remoto al que está conectado este objeto Socket. p pint getLocalPort() l l Devuelve el puerto local al que está conectado este objeto Socket. p pInputStream getInputStream() l l Devuelve el InputStream (flujo de entrada) asociado con este conector. p pOutputStream getOutputStream() l l Devuelve el OutputStream (flujo de salida) asociado con este conector. p pvoid close() l l Cierra el InputStream y el OutputStream.

23 Área de Ingeniería Telemática 23 Universidad de Sevilla Fundamentos de Telemática Constructores para el Servidor p pServerSocket(int puerto) l l Crea un conector en el servidor en un puerto específico. p pServerSocket(int puerto, int backlog) l l Se configura la longitud máx. de la cola de entrada. p pServerSocket(int port, int backlog, InetAddress dir) l l Ligada a una dirección.

24 Área de Ingeniería Telemática 24 Universidad de Sevilla Fundamentos de Telemática Creación de flujos de Entrada pEn el cliente se crea un flujo de entrada para recibir las respuestas del servidor (DataInputStream) Socket sock = new Socket(“host”,puerto); DataInputStream in = new DataInputStream(sock.getInputStream()); pDataInputStream tiene métodos como read(), readLine(), readChar(), readInt(), … pEn el servidor también, para recibir a los clientes ServerSocket sock = new ServerSocket(puerto);

25 Área de Ingeniería Telemática 25 Universidad de Sevilla Fundamentos de Telemática Creación de flujos de Salida pEn el cliente se crea un flujo de salida para enviar información al servidor (DataOutputStream o PrintStream) PrintStream out = new PrintStream(sock.getOutputStream()); DataOutputStream out = new DataInputStream(sock.getOutputStream()); pPrintStream tiene los métodos write y println. pDataOutputStream escribe los datos primarios y writeBytes. pEn el servidor se envía información al cliente PrintStream out = new PrintStream(sock.getOutputStream());

26 Área de Ingeniería Telemática 26 Universidad de Sevilla Fundamentos de 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(); }

27 Área de Ingeniería Telemática 27 Universidad de Sevilla Fundamentos de 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...

28 Área de Ingeniería Telemática 28 Universidad de Sevilla Fundamentos de 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 …

29 Área de Ingeniería Telemática 29 Universidad de Sevilla Fundamentos de Telemática pReferencia (dirección) de un recurso de Internet. pProtocolos: HTTP, FTP, Gopher, File y News. pNombre del recurso: URL (Uniform Resource Locator) http ://java.sun.com Identificador de protocolo Nombre del recurso Nombre host Nombre de la máquina en la que está el recurso. Nombre fichero Nombre del camino al fichero en la máquina. Número de Puerto Puerto al que se conecta (opcional). Referencia Referencia al nombre (opcional).

30 Área de Ingeniería Telemática 30 Universidad de Sevilla Fundamentos de Telemática Constructores (I) pURL absoluto, contiene toda la información para alcanzar el recurso l URL(String cad), ejemplo URL gamelan = new URL("http://www.gamelan.com/"); pURL relativo, los ficheros HTML dan de forma relacionada con el fichero en el que están. l URL(URL base,String relativo), ejemplo URL game = new URL("http://www.gamelan.com/pages/"); URL gamelan = new URL(game,”Gamelan.html");

31 Área de Ingeniería Telemática 31 Universidad de Sevilla Fundamentos de Telemática Constructores (y II) p pURL(String proto, String host, int port, String file) p pURL(String proto, String host, String file) p pURL gam = new URL ("http", ”www.gamelan.com”, 80, "/pages/Gamelan. html"); pCrea un objeto URL para el siguiente URL: http://www.gamelan.com:80/pages/Gamelan.network. html pMalformedURLException l Si el protocolo es desconocido o los argumentos del constructor son incorrectos. pLos objetos URL se escriben una vez (no se pueden cambiar).

32 Área de Ingeniería Telemática 32 Universidad de Sevilla Fundamentos de Telemática Métodos p pString getProtocol() + + Devuelve el componente identificador de protocolo del URL p pString getHost() + + Devuelve el nombre de host del URL p pint 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. p pString getFile() + + Devuelve el nombre del fichero del componente del URL. p pString toExternalForm() + + Devuelve una cadena que representa un URL.

33 Área de Ingeniería Telemática 33 Universidad de Sevilla Fundamentos de Telemática Ejemplo 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: http Puerto: -1 Nodo: www.starwave.com Archivo: /people/naughton/ Ext: http://www.starwave.com/people/naughton/ */

34 Área de Ingeniería Telemática 34 Universidad de Sevilla Fundamentos de Telemática Conexión a un URL pURLConnection 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); }

35 Área de Ingeniería Telemática 35 Universidad de Sevilla Fundamentos de Telemática Leyendo de un URL pInputStream 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(); }

36 Área de Ingeniería Telemática 36 Universidad de Sevilla Fundamentos de Telemática Leyendo de un URLConnection pInputStream 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(); }

37 Área de Ingeniería Telemática 37 Universidad de Sevilla Fundamentos de Telemática Datagramas pLos Datagramas se implementan sobre el protocolo UDP, con dos clases: pDatagramPacket, contiene los datos pDatagramSocket, es el mecanismo para enviar o recibir los DatagramPacket.

38 Área de Ingeniería Telemática 38 Universidad de Sevilla Fundamentos de Telemática Métodos pInetAddress getAddress() l Devuelve la dir. de destino (para envíos) pint getPort() l Devuelve el número de puerto. pbyte[] getData() l Devuelve el contenido del datagrama pint getLength() l Devuelve la longitud de los datos válidos


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

Presentaciones similares


Anuncios Google