Fundamentos de Redes de Computadores - PowerPoint PPT Presentation

About This Presentation
Title:

Fundamentos de Redes de Computadores

Description:

Una direccion IP es la direcci n absoluta de un computador cualquiera en toda la ... datos en la internet como: el File Transfer protocol (ftp), Gopher, File o News. ... – PowerPoint PPT presentation

Number of Views:825
Avg rating:3.0/5.0
Slides: 16
Provided by: vicg9
Category:

less

Transcript and Presenter's Notes

Title: Fundamentos de Redes de Computadores


1
(No Transcript)
2
La Clase InetAddress
  • Una direccion IP es la dirección absoluta de un
    computador cualquiera en toda la internet. En la
    versión actual consiste en un valor guardado en
    4bytes. Datos pueden ser mandados de un
    computador a otro en la internet sólo si se tiene
    este número del destinatario.
  • No tiene constructores, se crea un objeto
    InetAddress nuevo haciendo InetAddress n
    InetAddress.getLocalHost()
  • InetAddress n InetAddress.getByName(nombre)
  • Y tiene los siguientes métodos
  • String nombre n.getHostName()
  • String direccion n.getHostAddress()
  • ver programa ejemplo InetExample.java

3
La Clase URL
  • Un URL es un UNIFORM RESOURCE LOCATOR. Consiste
    en una dirección de un recurso que un servidor en
    la internet pone a disposición de los usuarios,
    como por ej. http//www.arminco.com
  • En un objeto URL existen dos componentes
    principales El descriptor de protocolo (ej.
    http) y el nombre del recurso (ej.
    www.arminco.com). http significa Hyper Text
    Transfer protocol pero hay otros protocolos de
    transferencia de datos en la internet como el
    File Transfer protocol (ftp), Gopher, File o
    News.
  • En java es posible abrir una direccion de URL
    leer el contenido como si fuera un archivo
    cualquiera. Para ello debemos crear un objeto
    URL, con el nombre del protocolo y la dirección
    del recurso que queremos recuperar.

4
La Clase URL (2)
  • Existen varios constructores de URL
  • URL unRUL new URL(http//www.arminco.com/index.
    html)
  • unURL new URL(httpwww.arminco.com,index.ht
    ml)
  • inURL new URL(http,www.arminco.com,80,index
    .html)
  • Al crear una variable URL se puede producir una
    excepcion del tipo MalformedURLException por eso
    se deben tomar las medidas necesarias (como por
    ej usar un bloque try-catch)
  • try
  • URL miURL new URL(....)
  • catch(MalFormedURLException e)
  • // codigo para atrapar la exception
  • Métodos que se pueden aplicar a un objeto de la
    clase URL
  • getProtocol(), getHost(), getPort(), getFile(),
    openConnection()

5
La Clase URL (3)
  • Si sabemos a priori que el contenido de un URL
    es texto podemos leerlo de la siguiente manera
  • import java.net.
  • import java,io.
  • public class Leer URL
  • public static void main(String args)
  • try
  • URL miURL new URL(http//www.dcc.uchile.cl)
  • URLConnection c miURL.openConnection()
  • BufferedReader in new BufferedReader (
  • new InputStreamReader(
  • c.getInputStream()))
  • String line
  • while ((line in.readLine() ! null)
  • System.out.prinln(line)
  • c.close()
  • catch(MalFormedURLException e)
  • Ejercicio programar esto pero permitir dar el
    http como parámetro

6
El Socket
  • Un socket es un extremo de un link de
    comunicación entre dos programas que corren en
    una red. El socket esta asociado (amarrado,
    bound) a ub número de port de modo que la capa
    TCP pueda identificar exactamente la aplicación a
    la cual están destinados los datos que llegan a
    un computador.
  • Normalmente un servidor que corre en un
    computadore específico tiene un socket que está
    asociado a un número de port específico. El
    servidor espera, oyendo por el socket a que un
    cliente quiera establecer alguna comunicación.
  • Para que un cliente pueda comuncarse con el
    servidor debe saber a que port está asociado el
    socket por el cual el servidor está aceptando
    llamadas. Para hacer una petición de conexión el
    cliente debe tratar de hacer un rendezvous con
    por el port donde está escuchando el servidor.

7
El Socket (2)
  • Si todo sale bien, el servidor acepta la
    conexión. Con la aceptación el servidor recibe un
    nuevo socket asociado a un port nuevo (cuyo
    número no necesariamente conoce). El port
    original (por donde escuchaba) queda libre para
    seguir escuchando otras peticiones.
  • Se crea un link de comunicaciones bi-direccional
    entre el servidor y el cliente. En el servidor,
    el extremo está asociado al nuevo port.
  • En el cliente, si la conexión fue aceptada por un
    servidor, se crea un socket asociado a un port
    (cuyo nombre no es necesariamente conocido).
  • El cliente y el servidor se comunican escribiendo
    datos en o leyendo datos desde el socket.

8
Sockets en el Cliente en Java (1)
  • Cuando un programa cliente (llamador) en java
    desea conectarse con un servidor (en cualquier
    lenguaje!) debe saber primero dónde esta
    corriendo (host) y en que port está escuchando.
  • El host lo puede dar como dirección (Ej
    192.123.355.211) o como nombre (ej
    achawall.dcc.uchile.cl).
  • Sabiendo esto puede interntar un rendezvous con
    el servidor. Esto se hace intentando crear una
    conexión TCP y recogiendo el extremo del circuito
    virtual en un socket
  • Socket llamando
  • llamando new Socket(host,5555)
  • Esto queda esperando hasta que se realiza la
    conexión en el servidor y se crea el socket, que
    es el extremo local de la conexión. El otro
    extremo (servidor) NO está asociado al port 5555.
    Ese se usó solamente para oir.
  • Esto puede ocacionar un error si el host no
    existe, no está alcanzable por la red o no hay
    ningún servidor oyendo por ese socket. Para eso
    hay naturalmente un timeout.
  • Conviene por esto siempre ejecutarlo en un bloque
    try con el catch agarrando una excepción
    UnknownHostException

9
Sockets en el Cliente en Java (2)
  • Si todo sale bien con la conexión, podemos abrir
    un canal de lectura y/u otro de escritura para
    poder recibir y/o enviar datos.
  • PrintWriter out new PrintWriter(llamando.getOutp
    utStream(), true)
  • BufferedReader In new BufferedReader(new
  • InputStreamReader(llamando.getInputStream()))
  • getInputStream y getOutputStream abren flujos de
    datos orientados a la lectura y escritura de
    bytes por la línea. Printwriter y BufferedReader
    son filtros que permiten leer y escribir
    strings.
  • out.print(hola pelao) out.println(como
    estas)
  • String linea in.readLine()
  • El servidor debe enviar una marca de fin de línea
    (ascii) !!!!
  • Veamos un cliente que se conecta al servidor echo
    de una máquina Unix. Modifíquelo para que se
    conecte a otros.

10
Programas Cliente en Java
  • Veamos un cliente que se conecta al servidor echo
    de una máquina Unix.
  • Cómo habría que modificarlo para que se conecte
    con el servidor date (13) y muestre la fecha?
  • Cómo habría que modificarlo para que se conecte
    con el servidor www (80) y muestre el archivo
    pedido?
  • Cómo habría que modificarlo para que se conecte
    con el servidor finger (79) y muestre la consulta
    pedida?
  • Cómo habría que modificarlo para que se conecte
    con el servidor ftp ( ???) y realice el diálogo?
  • Cómo se vería un cliente genérico que sirva de
    marco para todo esto?

11
Programas Cliente en Java
  • import java.io.
  • import java.net.
  • public class Cliente
  • public static void main(String args)
    throws IOException
  • Socket echoSocket null
    PrintWriter out null BufferedReader in
    null
  • if (args.length ! 2)
  • System.out.println(Use
    java Cliente lthostgt ltportgt ltprotocologt))
  • int nport Integer.parseInt(args1)
    int protocolo Integer.parseInt(args1)
  • try
  • echoSocket new
    Socket(args0,nport)
  • out new PrintWriter(echoSocket
    .getOutputStream(), true)
  • in new BufferedReader(new
  • InputStreamReader(echoSocket.getInputStream())
    )
  • catch (UnknownHostException
    e)
  • System.err.println("Don't
    know about host " args0)
  • System.exit(1)
  • catch (IOException e)

12
Sockets en el Servidor (1)
  • El servidor debe empezar por crear un socket
    servidor y asociarlo a un por desde donde
    escucuchará peticiones de posibles clientes que
    quieran conectarse.
  • ServerSocket escuchando
  • escuchando new ServerSocket(5555)
  • Con esto sólo ha creado el socket pero no está
    escuchando. Para poder empezar a escuchar debe
    hacer
  • Socket escuchando.accept()
  • Esta instrucción hace varias cosas
  • accept bloquea la ejecución del programa hasta
    que recibe una petición de un cliente por ese
    port (recordemos llamando new ....)
  • cuando llega un requerimiento de conexión, se
    crea un circuito virtual entre ambos
    computadores. El cliente recibe un extremo de esa
    conexión y el servidor la otra. Este otro extremo
    se asocia a otro socket que el sistemqa escoge
    convenientemente.

13
Sockets en el Servidor (2)
  • El servidor puede ejecutar los mismos métodos
    sobre su socket para abrir un flujo de entrada y
    salida de datos.
  • Aquí es importante el PROTOCOLO DE LA
    COMUNICACIÓN que no es más que las reglas que
    deben seguir servidor y cliente para comunicarse.
    Es muy importante que ambos tengan claros cuándo
    y qué se puede/debe escribir y/o leer. Ej. Cual
    es el protocolo de echo ?, de Date ? de telnet ?
  • Existen algunos otros métodos que se pueden
    ejecutar sobre un objeto de tipo Socket (notar
    que tante el servidor como el cliente estan con
    un socket de la misma clase después de haber
    establecido la comunicación)
  • InteAddress getInetAddress()
  • int getPort()
  • InetAddress getLocalAddress()
  • int getLocalPort()
  • void setSoTimeout(int timeout) int
    getSoTimeoute()
  • void setSoLinger(Boolean on, int val) int
    getSoLinger() (el delay despues de un close())
  • close()

14
Sockets Transmisión de Archivos(1)
  • Hagamos ahora un para de programas que se
    transmitan un archivo.
  • El que recibe el archivo se pone a escuchar para
    que le manden un archivo (es el servidor !!!)
  • El enviador del archivo sabe donde está
    escuchando el recibidor para recibir la petición
    de transmisión de archivos.
  • El traspaso se hace a nivel de bytes para poder
    traspasar cualquier tipo de archivo.

15
Sockets Transmisión de Archivos(2)
  • Hagamos ahora un par de programas algo más
    inteligentes
  • El Servidor queda esperando una petición en un
    port
  • Cuando llega una petición lee el nombre del
    archivo a entregar
  • Abre el archivo y lo transmite por el socket.
  • El cliente trata de conectarse con el servidor en
    el port acordado
  • una vez que resulta envía el nombre del archivo
    que quiere recuperar
  • Lee hasta que encuentra un fin de archivo y lo va
    guardando en un archivo del mismo nombre que el
    original.
Write a Comment
User Comments (0)
About PowerShow.com