SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
Desarrollo de Aplicaciones
       Distribuidas

    Sockets
       Daniel Avellaneda
Sockets en
  Java
Qué es un Socket
• Un socket es una abstracción a través de la cual una aplicación
  pueden mandar y recibir datos. Un socket permite a una
  aplicación conectarse a una red y comunicarse con otras
  aplicaciones que están conectadas a la misma red. Existen
  varios tipos de sockets, pero los más utilizados son los Stream
  Sockets y los Datagram Sockets.
• Los Stream Sockets funcionan sobre el protocolo TCP, con el
  protocolo IP por debajo. Los Stream Sockets ofrecen un servicio
  fiable. Los Datagram Sockets funcionan sobre el protocolo
  UDP, con el protocolo IP por debajo.
• Un socket TCP/IP está identificado por una dirección única, un
  protocolo (TCP o UDP) y un número de puerto.
• La imagen que aparece a continuación describe las relaciones
  entre las aplicaciones, los sockets, los números de puertos y los
  protocolos. Como podemos observar, un socket puede ser
  referenciado por varias aplicaciones y un aplicación puede
  escuchar en varios puertos. Cada aplicación puede
  comunicarse por el socket al que referencia.
Qué es un Socket
• Un socket es un punto final de un enlace
  de comunicación de dos vías entre dos
  programas que se ejecutan a través de la
  red.

• El cliente y el servidor deben ponerse de
  acuerdo sobre el protocolo que utilizarán.
Sockets en Java
Streams en Java
Jerarquía de Reader
Jerarquía de Writer
Jerarquía de InputStream
Jerarquía de OutputStream
Conexión de Streams Entrada / Salida

• Podemos conectar varios streams para poder
  alcanzar nuestro objetivo. Por ejemplo, podemos
  conectar un stream que se encargue de leer bytes
  de un fichero (FileInputStream) y otro que se
  encarge de leer tipos de datos concretos
  (DataInputStream).
Sockets TCP


• La API de sockets en modo stream proporciona acceso al
  servicio de transporte de datos proporcionado por el protocolo
  TCP.
• El servicio TCP es orientado a conexión y proporciona un
  transporte fiable. La conexión se establece y el flujo de bytes
  que sale del emisor es el mismo flujo de bytes que le llega al
  receptor.
• El servicio que proporcionan los sockets TCP es full-duplex, lo
  que quiere decir que un mismo socket se puede utilizar tanto
  para enviar como para recibir datos.
• Para que una conexión se pueda establecer, uno de los
  sockets debe estar a la espera de recibir conexiones y el otro
  socket debe iniciar una conexión, y para que una conexión se
  cierre, basta con que uno de los sockets cierre la conexión.
Tipos de Sockets (Orientado a conexión)

• Hay dos tipos de socket:
   – Orientado a conexión:
      • Establece un camino virtual entre servidor y cliente,
        fiable, sin pérdidas de información ni duplicados, la
        información llega en el mismo orden que se envía.
      • El cliente abre una sesión en el servidor y este guarda
        un estado del cliente.

           – El cliente utiliza la clase Socket
           – El servidor utiliza la clase ServerSocket
Tipos de Stream Sockets en Java
• En Java existen dos tipos de stream sockets
  que tienen asociadas sendas clases:
• ServerSocket proporciona un socket
  dispuesto a aceptar conexiones TCP de
  forma pasiva. El proceso que posee un
  ServerSocket se le denomina Servidor.
• Socket proporciona un socket por el que se
  pueden intercambiar datos con otro socket.
  El proceso que posee un Socket se le
  denomina Cliente.
Clase Socket
• Constructores:
   – public Socket ()
   – public Socket (InetAddress address, int port)
   – public Socket (String host, int port)
   – public Socket (InetAddress address, int port, InetAddress
     localAddr, int localPort)
   – public Socket (String host, int port, InetAddress localAddr,
     int localPort)

        • address / localAddr: dirección IP de la máquina remota
          / local.
        • port / localPort: puerto de la máquina remota / local.
        • host: nombre de la máquina remota

• En el caso del primer constructor crea un socket sin conexión.
Servicios de la clase Socket
   – public InetAddress getInetAddress():
       • Devuelve la dirección IP de la máquina en la que
         estamos conectados.
   – public int getPort():
       • Devuelve el puerto de la máquina remota.
   – public void close()
       • Cierra el canal de comunicación.
   – public InputStream getInputStream():
       • Devuelve el canal de lectura del socket.
   – public OutputStream getOutputStream():
       • Devuelve el canal de escritura del socket.
• Ademas JAVA proporciona dos llamadas para saber la @IP y
  puerto local (getLocalAddress() y getLocalPort())
Clase ServerSocket
• Constructores:
   – public ServerSocket (int port)
   – public ServerSocket (int port, int backlog)
   – public ServerSocket (int port, int backlog, InetAddress
     bindAddr)

        • port: puerto de la máquina servidora.
        • backlog: tamaño de la cola de espera, en el primero es
          50.
        • bindAddr: dirección IP local que se hará pública
          mediante el bind.

• El constructor ServerSocket se encarga de hacer el bind y el
  listen.
Servicios de la Clase ServerSocket
 – public Socket accept():
    • Devuelve el socket resultado de aceptar una petición,
      para llevar a cabo la comunicación con el cliente.
 – public void close()
    • Cierra el canal de comunicación.
 – public InetAddress getInetAddress():
    • Devuelve la dirección IP de la máquina local.
 – public int getLocalPort():
    • Devuelve el puerto de la máquina local.
Comunicación entre cliente-servidor
• Para la transmisión de datos entre cliente y servidor se
  utilizarán las clases DataInputStream (recibir datos) y
  DataOutputStream (enviar datos)
• Estas clases disponen de métodos para leer y escribir datos
  en el socket:
   – read/writeBoolean
   – read/writeChar
   – read/writeDouble, read/writeFloat, read/writeInt,
       read/writeLong, read/writeShort
   – read/writeUTF (leer/escribir cadenas de caracteres)
• Para envíar los datos se utiliza el método flush() de la clase
  DataOutputStream.
Conexión de Sockets en Java
Proceso Básico de Conexión entre dos
                     Sockets TCP
                   Proceso Servidor                                             Proceso Cliente

1. El proceso servidor crea un ServerSocket y se ata
      a un puerto con él.
2. El proceso servidor se pone a escuchar en ese
      puerto para recibir peticiones, para ello utiliza el
      método accept() de la clase ServerSocket. Este
      método devuelve un Socket.
                                                             3. El proceso cliente crea un Socket y se conecta al
                                                                   servidor con el nombre de la máquina y el
                                                                   puerto.
4. El proceso servidor va a utilizar el Socket devuelto
      por el método accept() para intercambiar datos
      con el proceso cliente. Para el intercambio de
      datos se utilizan Streams.
                                                             5. El proceso cliente envía la información necesaria
                                                                   para que el proceso servidor pueda trabajar.
6. El proceso servidor envía al cliente la información
      requerida.
NOTA el paso 5 y 6 puede repetirse varias veces.

7. Se cierra la conexión.                                    7. Se cierra la conexión.
Ejemplos Sockets (Lado Servidor)
import java.io.* ;
import java.net.* ;

class Serv1 {
 static final int PUERTO=6000;

 public Serv1( ) {
   try {
     ServerSocket skServidor = new ServerSocket( PUERTO );
     System.out.println("Escucho el puerto " + PUERTO );
     for ( int numCli = 0; numCli < 3; numCli++) {
       Socket skCliente = skServidor.accept(); // Crea objeto
       System.out.println("Sirvo al cliente " + numCli);
       OutputStream aux = skCliente.getOutputStream();
       DataOutputStream flujo= new DataOutputStream( aux );
       flujo.writeUTF( "Hola cliente " + numCli );
       skCliente.close();
     }
     System.out.println("Clientes Atendidos");
    } catch( Exception e ) {
    System.out.println( e.getMessage() );
  }
 }
 public static void main( String[] arg ) {
   new Serv1();
 }}
Ejemplos Sockets (Lado Cliente)
 import java.io.*;
import java.net.*;

class Clien1 {

    static final String HOST = "localhost";
    static final int Puerto=6000;

    public Clien1( ) {
      try{
       Socket skCliente = new Socket( HOST , Puerto );
       InputStream aux = skCliente.getInputStream();
       DataInputStream flujo = new DataInputStream( aux );
       System.out.println( flujo.readUTF() );
       skCliente.close();
      } catch( Exception e ) {
        System.out.println( e.getMessage() );
      }
    }

    public static void main(String args[]){
      new Clien1();
    }
}
Tipos de Sockets (No orientados a conexión)

   – No orientado a conexión:
      • Envío de datagramas de tamaño fijo. No es fiable,
        puede haber pérdidas de información y duplicados, y la
        información puede llegar en distinto orden del que se
        envía.
      • No se guarda ningún estado del cliente en el servidor,
        por ello, es más tolerante a fallos del sistema.

           – Tanto el cliente como el servidor utilizan la clase
             DatagramSocket.

• Todas estas clases (Socket, ServerSocket y DatagramSocket)
  se encuentran en el paquete java.net
Clase DatagramSocket
• Constructores:
   – public DatagramSocket ()
   – public DatagramSocket (int port)
   – public DatagramSocket (int port, InetAddress laddr)

        • port: puerto de la máquina.
        • laddr: dirección IP local que se hará pública mediante el
          bind.
• El constructor DatagramSocket se encarga de hacer el bind.
• El primer constructor coge un puerto libre.
Servicios de la Clase DatagramSocket
   – public void connect(InetAddress address, int port):
       • Conecta el socket a la máquina remota con la @IP
         address y puerto port.
   – public void close()
       • Cierra el canal de comunicación.
   – public void disconnect():
       • Desconecta el socket.
   – public InetAddress getInetAddress():
       • Devuelve la @IP de la máquina remota.
   – public int getPort():
       • Devuelve el puerto de la máquina remota.
• Tambien hay dos llamadas para saber la @IP y puerto local
  (getLocalAddress() y getLocalPort()).
Servicios de la Clase DatagramSocket
 – public void send(DatagramPacket p):
    • Envía un datagrama a la máquina remota, por el socket
      asociado.
 – public void receive(DatagramPacket p):
    • Recibe un datagrama de otra máquina, por el socket
      asociado.
Clase DatagramPacket
• Constructores:
   – public DatagramPacket (byte[] buff, int length)
       • Construye un DatagramPacket para recibir paquetes en
         el buffer buff, de longitud length
   – public DatagramPacket (byte[] buff, int length, InetAddress
     address, int port)
       • Construye un DatagramPacket para envíar paquetes
         con datos del buffer buff, de longitud length, a la @IP
         address y el puerto port.
• Servicios:
   – Para la actualización y consulta de los diferentes campos
     de un DatagramPacket disponemos de los siguientes
     métodos: set/getAddress, set/getData, set/getLength,
     set/getPort.
Bibliografía
http://www.java.sun.com
http://www.dlsi.ua.es/asignaturas/sid/JSockets.pdf
http://zarza.usal.es/~fgarcia/doc/tuto2/V_2.htm
http://www.wikilearning.com/tutorial/tutorial_de_java-sockets/3938-167
http://www.publispain.com/supertutoriales/


Coulouris, George y otros. Sistemas Distribuidos. Conceptos y Diseño.
Madrid. 2001. Addison Wesley.
Froufe, Agustín. Java 2. Manual de usuario y Tutorial. Mexico, 2003.
Editorial Alfaomega.

Weitere ähnliche Inhalte

Was ist angesagt?

10 Clase Captura De Los Requisitos Cap.6
10 Clase Captura De Los Requisitos  Cap.610 Clase Captura De Los Requisitos  Cap.6
10 Clase Captura De Los Requisitos Cap.6Julio Pari
 
CreacióN De Objetos En MySQL
CreacióN De Objetos En MySQLCreacióN De Objetos En MySQL
CreacióN De Objetos En MySQLalexmerono
 
Caso de-uso-1228271248231157-9
Caso de-uso-1228271248231157-9Caso de-uso-1228271248231157-9
Caso de-uso-1228271248231157-9Toni Benitez
 
Modelado basados en escenarios
Modelado basados en escenariosModelado basados en escenarios
Modelado basados en escenariosUCATEBA
 
3.1 Representación de conocimiento mediante reglas.pptx
3.1 Representación de conocimiento mediante reglas.pptx3.1 Representación de conocimiento mediante reglas.pptx
3.1 Representación de conocimiento mediante reglas.pptxRam Vazquez
 
JDBC MONOGRAFIA
JDBC MONOGRAFIAJDBC MONOGRAFIA
JDBC MONOGRAFIASefira111
 
1.5.2 redes de ejemplo tipicas orientadas a conexion
1.5.2  redes de ejemplo tipicas orientadas a conexion 1.5.2  redes de ejemplo tipicas orientadas a conexion
1.5.2 redes de ejemplo tipicas orientadas a conexion luishdiaz
 
Sistemas Distribuidos basados en la Web
Sistemas Distribuidos basados en la WebSistemas Distribuidos basados en la Web
Sistemas Distribuidos basados en la WebTensor
 
Ejercicios interbloqueo
Ejercicios interbloqueoEjercicios interbloqueo
Ejercicios interbloqueoEdgar Farias
 
Diagramas clases presentacion
Diagramas clases presentacionDiagramas clases presentacion
Diagramas clases presentacionjosebrandon24
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Jose R. Hilera
 
teoria de colas con arena ope2
teoria de colas con arena ope2teoria de colas con arena ope2
teoria de colas con arena ope2kevincervantes10
 
Diagrama de-estado-de-procesos
Diagrama de-estado-de-procesosDiagrama de-estado-de-procesos
Diagrama de-estado-de-procesosGiant_serch
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoFYaskelly Yedra
 

Was ist angesagt? (20)

10 Clase Captura De Los Requisitos Cap.6
10 Clase Captura De Los Requisitos  Cap.610 Clase Captura De Los Requisitos  Cap.6
10 Clase Captura De Los Requisitos Cap.6
 
CreacióN De Objetos En MySQL
CreacióN De Objetos En MySQLCreacióN De Objetos En MySQL
CreacióN De Objetos En MySQL
 
Caso de-uso-1228271248231157-9
Caso de-uso-1228271248231157-9Caso de-uso-1228271248231157-9
Caso de-uso-1228271248231157-9
 
Modelado basados en escenarios
Modelado basados en escenariosModelado basados en escenarios
Modelado basados en escenarios
 
3.1 Representación de conocimiento mediante reglas.pptx
3.1 Representación de conocimiento mediante reglas.pptx3.1 Representación de conocimiento mediante reglas.pptx
3.1 Representación de conocimiento mediante reglas.pptx
 
Ejemplo de Trigger en Mysql
Ejemplo de Trigger en MysqlEjemplo de Trigger en Mysql
Ejemplo de Trigger en Mysql
 
Modelo Entidad Relacion
Modelo Entidad RelacionModelo Entidad Relacion
Modelo Entidad Relacion
 
Modelo Entidad Relación
Modelo Entidad RelaciónModelo Entidad Relación
Modelo Entidad Relación
 
Cuestionario sobre SGBD
Cuestionario sobre SGBDCuestionario sobre SGBD
Cuestionario sobre SGBD
 
JDBC MONOGRAFIA
JDBC MONOGRAFIAJDBC MONOGRAFIA
JDBC MONOGRAFIA
 
1.5.2 redes de ejemplo tipicas orientadas a conexion
1.5.2  redes de ejemplo tipicas orientadas a conexion 1.5.2  redes de ejemplo tipicas orientadas a conexion
1.5.2 redes de ejemplo tipicas orientadas a conexion
 
Sistemas Distribuidos basados en la Web
Sistemas Distribuidos basados en la WebSistemas Distribuidos basados en la Web
Sistemas Distribuidos basados en la Web
 
Ejercicios interbloqueo
Ejercicios interbloqueoEjercicios interbloqueo
Ejercicios interbloqueo
 
Diagramas clases presentacion
Diagramas clases presentacionDiagramas clases presentacion
Diagramas clases presentacion
 
Ejercicios sql
Ejercicios sqlEjercicios sql
Ejercicios sql
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)
 
teoria de colas con arena ope2
teoria de colas con arena ope2teoria de colas con arena ope2
teoria de colas con arena ope2
 
modelo er
modelo ermodelo er
modelo er
 
Diagrama de-estado-de-procesos
Diagrama de-estado-de-procesosDiagrama de-estado-de-procesos
Diagrama de-estado-de-procesos
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoF
 

Ähnlich wie Desarrollo aplicaciones distribuidas sockets

Ähnlich wie Desarrollo aplicaciones distribuidas sockets (20)

M18
M18M18
M18
 
Sockets tcp
Sockets tcpSockets tcp
Sockets tcp
 
Sockets/ tcp
Sockets/ tcpSockets/ tcp
Sockets/ tcp
 
Sockets y Threads en Java
Sockets y Threads en JavaSockets y Threads en Java
Sockets y Threads en Java
 
Networking
NetworkingNetworking
Networking
 
Sockets
SocketsSockets
Sockets
 
Sockets
SocketsSockets
Sockets
 
Sockets en JAVA
Sockets en JAVASockets en JAVA
Sockets en JAVA
 
Edwin
EdwinEdwin
Edwin
 
Socket
SocketSocket
Socket
 
que es un socket
que es un socketque es un socket
que es un socket
 
Edwin
EdwinEdwin
Edwin
 
J sockets
J socketsJ sockets
J sockets
 
Sockets TCP
Sockets TCPSockets TCP
Sockets TCP
 
Tema iv comunicación entre procesos
Tema iv comunicación entre procesosTema iv comunicación entre procesos
Tema iv comunicación entre procesos
 
Deber
DeberDeber
Deber
 
Semana 8 api de socket
Semana  8 api de socketSemana  8 api de socket
Semana 8 api de socket
 
Sockets java
Sockets javaSockets java
Sockets java
 
Comunicacion intra procesos con socket
Comunicacion intra procesos con socketComunicacion intra procesos con socket
Comunicacion intra procesos con socket
 
C documents and settings_pc10_configuración local_datos de programa_mozilla_...
C  documents and settings_pc10_configuración local_datos de programa_mozilla_...C  documents and settings_pc10_configuración local_datos de programa_mozilla_...
C documents and settings_pc10_configuración local_datos de programa_mozilla_...
 

Kürzlich hochgeladen

Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 

Kürzlich hochgeladen (20)

Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 

Desarrollo aplicaciones distribuidas sockets

  • 1. Desarrollo de Aplicaciones Distribuidas Sockets Daniel Avellaneda
  • 2. Sockets en Java
  • 3. Qué es un Socket • Un socket es una abstracción a través de la cual una aplicación pueden mandar y recibir datos. Un socket permite a una aplicación conectarse a una red y comunicarse con otras aplicaciones que están conectadas a la misma red. Existen varios tipos de sockets, pero los más utilizados son los Stream Sockets y los Datagram Sockets. • Los Stream Sockets funcionan sobre el protocolo TCP, con el protocolo IP por debajo. Los Stream Sockets ofrecen un servicio fiable. Los Datagram Sockets funcionan sobre el protocolo UDP, con el protocolo IP por debajo. • Un socket TCP/IP está identificado por una dirección única, un protocolo (TCP o UDP) y un número de puerto. • La imagen que aparece a continuación describe las relaciones entre las aplicaciones, los sockets, los números de puertos y los protocolos. Como podemos observar, un socket puede ser referenciado por varias aplicaciones y un aplicación puede escuchar en varios puertos. Cada aplicación puede comunicarse por el socket al que referencia.
  • 4. Qué es un Socket • Un socket es un punto final de un enlace de comunicación de dos vías entre dos programas que se ejecutan a través de la red. • El cliente y el servidor deben ponerse de acuerdo sobre el protocolo que utilizarán.
  • 11. Conexión de Streams Entrada / Salida • Podemos conectar varios streams para poder alcanzar nuestro objetivo. Por ejemplo, podemos conectar un stream que se encargue de leer bytes de un fichero (FileInputStream) y otro que se encarge de leer tipos de datos concretos (DataInputStream).
  • 12. Sockets TCP • La API de sockets en modo stream proporciona acceso al servicio de transporte de datos proporcionado por el protocolo TCP. • El servicio TCP es orientado a conexión y proporciona un transporte fiable. La conexión se establece y el flujo de bytes que sale del emisor es el mismo flujo de bytes que le llega al receptor. • El servicio que proporcionan los sockets TCP es full-duplex, lo que quiere decir que un mismo socket se puede utilizar tanto para enviar como para recibir datos. • Para que una conexión se pueda establecer, uno de los sockets debe estar a la espera de recibir conexiones y el otro socket debe iniciar una conexión, y para que una conexión se cierre, basta con que uno de los sockets cierre la conexión.
  • 13. Tipos de Sockets (Orientado a conexión) • Hay dos tipos de socket: – Orientado a conexión: • Establece un camino virtual entre servidor y cliente, fiable, sin pérdidas de información ni duplicados, la información llega en el mismo orden que se envía. • El cliente abre una sesión en el servidor y este guarda un estado del cliente. – El cliente utiliza la clase Socket – El servidor utiliza la clase ServerSocket
  • 14. Tipos de Stream Sockets en Java • En Java existen dos tipos de stream sockets que tienen asociadas sendas clases: • ServerSocket proporciona un socket dispuesto a aceptar conexiones TCP de forma pasiva. El proceso que posee un ServerSocket se le denomina Servidor. • Socket proporciona un socket por el que se pueden intercambiar datos con otro socket. El proceso que posee un Socket se le denomina Cliente.
  • 15. Clase Socket • Constructores: – public Socket () – public Socket (InetAddress address, int port) – public Socket (String host, int port) – public Socket (InetAddress address, int port, InetAddress localAddr, int localPort) – public Socket (String host, int port, InetAddress localAddr, int localPort) • address / localAddr: dirección IP de la máquina remota / local. • port / localPort: puerto de la máquina remota / local. • host: nombre de la máquina remota • En el caso del primer constructor crea un socket sin conexión.
  • 16. Servicios de la clase Socket – public InetAddress getInetAddress(): • Devuelve la dirección IP de la máquina en la que estamos conectados. – public int getPort(): • Devuelve el puerto de la máquina remota. – public void close() • Cierra el canal de comunicación. – public InputStream getInputStream(): • Devuelve el canal de lectura del socket. – public OutputStream getOutputStream(): • Devuelve el canal de escritura del socket. • Ademas JAVA proporciona dos llamadas para saber la @IP y puerto local (getLocalAddress() y getLocalPort())
  • 17. Clase ServerSocket • Constructores: – public ServerSocket (int port) – public ServerSocket (int port, int backlog) – public ServerSocket (int port, int backlog, InetAddress bindAddr) • port: puerto de la máquina servidora. • backlog: tamaño de la cola de espera, en el primero es 50. • bindAddr: dirección IP local que se hará pública mediante el bind. • El constructor ServerSocket se encarga de hacer el bind y el listen.
  • 18. Servicios de la Clase ServerSocket – public Socket accept(): • Devuelve el socket resultado de aceptar una petición, para llevar a cabo la comunicación con el cliente. – public void close() • Cierra el canal de comunicación. – public InetAddress getInetAddress(): • Devuelve la dirección IP de la máquina local. – public int getLocalPort(): • Devuelve el puerto de la máquina local.
  • 19. Comunicación entre cliente-servidor • Para la transmisión de datos entre cliente y servidor se utilizarán las clases DataInputStream (recibir datos) y DataOutputStream (enviar datos) • Estas clases disponen de métodos para leer y escribir datos en el socket: – read/writeBoolean – read/writeChar – read/writeDouble, read/writeFloat, read/writeInt, read/writeLong, read/writeShort – read/writeUTF (leer/escribir cadenas de caracteres) • Para envíar los datos se utiliza el método flush() de la clase DataOutputStream.
  • 21. Proceso Básico de Conexión entre dos Sockets TCP Proceso Servidor Proceso Cliente 1. El proceso servidor crea un ServerSocket y se ata a un puerto con él. 2. El proceso servidor se pone a escuchar en ese puerto para recibir peticiones, para ello utiliza el método accept() de la clase ServerSocket. Este método devuelve un Socket. 3. El proceso cliente crea un Socket y se conecta al servidor con el nombre de la máquina y el puerto. 4. El proceso servidor va a utilizar el Socket devuelto por el método accept() para intercambiar datos con el proceso cliente. Para el intercambio de datos se utilizan Streams. 5. El proceso cliente envía la información necesaria para que el proceso servidor pueda trabajar. 6. El proceso servidor envía al cliente la información requerida. NOTA el paso 5 y 6 puede repetirse varias veces. 7. Se cierra la conexión. 7. Se cierra la conexión.
  • 22. Ejemplos Sockets (Lado Servidor) import java.io.* ; import java.net.* ; class Serv1 { static final int PUERTO=6000; public Serv1( ) { try { ServerSocket skServidor = new ServerSocket( PUERTO ); System.out.println("Escucho el puerto " + PUERTO ); for ( int numCli = 0; numCli < 3; numCli++) { Socket skCliente = skServidor.accept(); // Crea objeto System.out.println("Sirvo al cliente " + numCli); OutputStream aux = skCliente.getOutputStream(); DataOutputStream flujo= new DataOutputStream( aux ); flujo.writeUTF( "Hola cliente " + numCli ); skCliente.close(); } System.out.println("Clientes Atendidos"); } catch( Exception e ) { System.out.println( e.getMessage() ); } } public static void main( String[] arg ) { new Serv1(); }}
  • 23. Ejemplos Sockets (Lado Cliente) import java.io.*; import java.net.*; class Clien1 { static final String HOST = "localhost"; static final int Puerto=6000; public Clien1( ) { try{ Socket skCliente = new Socket( HOST , Puerto ); InputStream aux = skCliente.getInputStream(); DataInputStream flujo = new DataInputStream( aux ); System.out.println( flujo.readUTF() ); skCliente.close(); } catch( Exception e ) { System.out.println( e.getMessage() ); } } public static void main(String args[]){ new Clien1(); } }
  • 24. Tipos de Sockets (No orientados a conexión) – No orientado a conexión: • Envío de datagramas de tamaño fijo. No es fiable, puede haber pérdidas de información y duplicados, y la información puede llegar en distinto orden del que se envía. • No se guarda ningún estado del cliente en el servidor, por ello, es más tolerante a fallos del sistema. – Tanto el cliente como el servidor utilizan la clase DatagramSocket. • Todas estas clases (Socket, ServerSocket y DatagramSocket) se encuentran en el paquete java.net
  • 25. Clase DatagramSocket • Constructores: – public DatagramSocket () – public DatagramSocket (int port) – public DatagramSocket (int port, InetAddress laddr) • port: puerto de la máquina. • laddr: dirección IP local que se hará pública mediante el bind. • El constructor DatagramSocket se encarga de hacer el bind. • El primer constructor coge un puerto libre.
  • 26. Servicios de la Clase DatagramSocket – public void connect(InetAddress address, int port): • Conecta el socket a la máquina remota con la @IP address y puerto port. – public void close() • Cierra el canal de comunicación. – public void disconnect(): • Desconecta el socket. – public InetAddress getInetAddress(): • Devuelve la @IP de la máquina remota. – public int getPort(): • Devuelve el puerto de la máquina remota. • Tambien hay dos llamadas para saber la @IP y puerto local (getLocalAddress() y getLocalPort()).
  • 27. Servicios de la Clase DatagramSocket – public void send(DatagramPacket p): • Envía un datagrama a la máquina remota, por el socket asociado. – public void receive(DatagramPacket p): • Recibe un datagrama de otra máquina, por el socket asociado.
  • 28. Clase DatagramPacket • Constructores: – public DatagramPacket (byte[] buff, int length) • Construye un DatagramPacket para recibir paquetes en el buffer buff, de longitud length – public DatagramPacket (byte[] buff, int length, InetAddress address, int port) • Construye un DatagramPacket para envíar paquetes con datos del buffer buff, de longitud length, a la @IP address y el puerto port. • Servicios: – Para la actualización y consulta de los diferentes campos de un DatagramPacket disponemos de los siguientes métodos: set/getAddress, set/getData, set/getLength, set/getPort.