Tema 16: Comunicaciones en Red - PowerPoint PPT Presentation

About This Presentation
Title:

Tema 16: Comunicaciones en Red

Description:

Las clases encapsulan el paradigma de 'socket' (conectores) ... Protocolos: HTTP, FTP, Gopher, File y News. Nombre del recurso: URL (Uniform Resource Locator) ... – PowerPoint PPT presentation

Number of Views:108
Avg rating:3.0/5.0
Slides: 39
Provided by: doloresco8
Category:

less

Transcript and Presenter's Notes

Title: Tema 16: Comunicaciones en Red


1
Tema 16 Comunicaciones en Red
2
Índice
  • Introducción.
  • Socket.
  • URL.
  • Datagramas.

3
Introducción
  • Se puede realizar con cualquier lenguaje
  • java.net
  • Las clases encapsulan el paradigma de socket
    (conectores) creados por BSD (Berkeley Software
    Distribution) en la Universidad de Berkeley.
  • UNIX 4.2BSD (Bill Joy, en Sun Microsystems).
  • Los programas Java están en la capa de
    aplicación.
  • Pasos Abrir, leer/escribir, cerrar.

4
TCP (Transport Control Protocol)
  • Comunicaciones fiables, establecen una conexión y
    comunicaciones en ambos sentidos.
  • El orden en que se envían y reciben los datos es
    crítico.
  • Servicio telefónico.
  • Ejemplos
  • HTTP (Hypertext Transfer Protocol)
  • FTP (File Transfer Protocol)
  • Telnet
  • Clases URL, URLConnection, Socket y ServerSocket.

5
UDP (User Datagram Protocol)
  • No está orientado a conexión. No se garantiza la
    entrega.
  • Servicio postal.
  • Los paquetes de datos datagramas.
  • Clases DatagramPacket, DatagramSocket y
    MulticastSocket.

6
Puertos
  • Distingue la aplicación dentro de la máquina.
  • Los datos van acompañados de
  • la dirección de la computadora (32 bits)
  • el puerto al que va destinado (16 bits)
  • Rango para los puertos 0-65535

7
Servidor
Puerto
Cliente
8
Aplic.
Aplic.
Aplic.
Aplic.
puerto
puerto
puerto
puerto
TCP o UDP
Datos
Datos
puerto
9
Conectores reservados
  • TCP/IP reserva los primeros 1024 para sus
    protocolos específicos.

Puerto
Servicio
13/udp
daytime
21/tcp
ftp
23 /tcp
telnet
25 /tcp
E-mail
79 /tcp
finger
80 /tcp
HTTP
119 /tcp
netnews
10
Servicio de nombres de Dominio (DNS)
  • Existe una jerarquía de nombres asociada a los
    números que representan las direcciones que se
    conoce como DNS.
  • Permite teclear www.yahoo.com en vez de
    205.216.146.71.

11
Aplicación (HTTP, ftp, telnet, ...)
Transporte (TCP, UDP, ...)
Red (IP, ...)
Enlace (dispositivo driver, ...)
12
El paquete java.net (I)
SocketImpl
Clase abstracta.
Socket
Implementa un cliente Socket.
ServerSocket
Implementa un servidor Socket.
SocketPermission
Acceso a la red vía socket
13
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
El paquete java.net (III)
DatagramPacket
Clase que representa un datagrama.
DatagramSocket
Tx/Rx de datagramas en un socket.
MulticastSocket
Tx/Rx de paquetes IP multicast.
15
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
InetAddress
  • Encapsula direcciones IP y sus nombres.
  • No tiene constructores visibles, pero se
    proporcionan métodos 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.

17
import java.net.InetAddress class dire
public static void main(String args)
InetAddress direccion try direccion
InetAddress.getLocalHost() System.out.println(d
ireccion) System.out.println() direccion
InetAddress.getByName("trajano.us.es") System.o
ut.println(direccion) System.out.println() I
netAddress SW InetAddress.getAllByName("trajan
o.us.es") for(int i 0 iltSW.length
i) System.out.println(SWi) catch
(Exception e) System.out.println("Error en
ejecución "e) / 16-adrianoMongt
java dire adriano/193.147.162.138 trajano.us.es/1
93.147.162.130 trajano.us.es/193.147.162.130
17-adrianoMongt
/
18
Mé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.

19
Socket
  • Socket Comunic. de bajo nivel.
  • URL y URLConnection Comunic. de alto nivel.
  • Sobre TCP, cada programa establece una conexión
    (cliente-servidor) y va ligado a un socket.
  • Los socket son puntos finales del enlace.
  • Los procesos los trata como descriptores de
    ficheros.
  • El Cliente conoce
  • el nombre la máquina servidora
  • número de puerto al que está conectado
  • El Servidor
  • Acepta la conexión

20
Modelo de Comunicaciones
Servidor
Cliente
ServerSocket(port) accept()
Socket(host,port)
OutputStream InputStream
OutputStream InputStream
close()
close()
21
Constructores para el cliente
  • Cuando se crea un objeto Socket, se establece una
    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.

22
Informació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.

23
Constructores 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.

24
Creación de flujos de Entrada
  • En 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.getI
    nputStream())
  • DataInputStream tiene métodos como read(),
    readLine(), readChar(), readInt(),
  • En el servidor también, para recibir a los
    clientes
  • ServerSocket sock new ServerSocket(puerto)

25
Creación de flujos de Salida
  • En el cliente se crea un flujo de salida para
    enviar información al servidor (DataOutputStream
    o PrintStream)
  • PrintStream out new PrintStream(sock.getOutputSt
    ream())
  • DataOutputStream out new DataInputStream(sock.ge
    tOutputStream())
  • PrintStream tiene los métodos write y println.
  • DataOutputStream escribe los datos primarios y
    writeBytes.
  • En el servidor se envía información al cliente
  • PrintStream out new PrintStream(sock.getOutputSt
    ream())

26
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.length0 ? starwave.com
args0"\n) byte buf new
bytestr.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
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(echoSocke
t.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
Continuación
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("e
cho " in.readLine()) out.close() in.clo
se() stdIn.close() echoSocket.close()

29
URL (Uniform Resource Locator)
  • Referencia (dirección) de un recurso de Internet.
  • Protocolos HTTP, FTP, Gopher, File y News.
  • Nombre del recurso

http//java.sun.com
Nombre del recurso
Identificador de protocolo
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
Constructores (I)
  • URL absoluto, contiene toda la información para
    alcanzar el recurso
  • URL(String cad), ejemplo
  • URL gamelan new URL("http//www.gamelan.com/")
  • URL relativo, los ficheros HTML dan de forma
    relacionada con el fichero en el que están.
  • URL(URL base ,String relativo), ejemplo
  • URL game new URL("http//www.gamelan.com/pages/"
    )
  • URL gamelan new URL(game,Gamelan.html")

31
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
  • http//www.gamelan.com80/pages/Gamelan.network.ht
    ml
  • MalformedURLException
  • Si el protocolo es desconocido o los argumentos
    del constructor son incorrectos.
  • Los objetos URL se escriben una vez (no se pueden
    cambiar).

32
Mé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.

33
Ejemplo
import java.net. class Patric public
static void main(String args) throws
MalformedURLException URL hp new URL
("http//www.starwave.com/people/naughton/") Sys
tem.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/peo
ple/naughton/ /
34
Conexión a un URL
  • URLConnection openConnection()

import java.net. import java.io. class
URL0 public static void main(String args)
try URL yahoo new URL ("http//www.yahoo.c
om/") yahoo.openConnection() System.out.prin
tln("OK ") catch(MalformedURLException
e) System.out.println("Excep "
e) catch(IOException e) System.out.println("
Excep " e)
35
Leyendo de un URL
  • 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((input
Line in.readLine())! null) System.out.println
(inputLine) in.close()
36
Leyendo de un URLConnection
  • 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.getInp
utStream())) String inputLine while((input
Line in.readLine())! null) System.out.printl
n(inputLine) in.close()
37
Datagramas
  • Los Datagramas se implementan sobre el protocolo
    UDP, con dos clases
  • DatagramPacket, contiene los datos
  • DatagramSocket, es el mecanismo para enviar o
    recibir los DatagramPacket.

38
Métodos
  • InetAddress getAddress()
  • Devuelve la dir. de destino (para envíos)
  • int getPort()
  • Devuelve el número de puerto.
  • byte getData()
  • Devuelve el contenido del datagrama
  • int getLength()
  • Devuelve la longitud de los datos válidos
Write a Comment
User Comments (0)
About PowerShow.com