lunes, 13 de noviembre de 2017

Socket Stream

Socket Stream

Introducción

Un socket es una interfaz de entrada­-salida de datos que permite la intercomunicación entre procesos. Anteriormente se trató el tema de sockets datagrama (no orientados a conexión), sin embargo los sockets stream son los más utilizados y es el tema que se tratará en esta entrada.

Mientras que el API de sockets datagrama permite el intercambio de unidades discretas de datos (es decir, datagramas), el API de sockets en modo stream proporciona un modelo de transferencia de datos basado en la E/S en modo stream de los sistemas operativos Unix. Por definición, un socket en modo stream proporciona sólo comunicaciones orientadas a conexión.

Socket Stream

Los sockets son mecanismos de comunicación entre procesos que permiten que un proceso hable ( emita o reciba información ) con otro proceso incluso estando en distintas máquinas.

Propiedades

Fiabilidad de la Transmisión. No se pierden los datos transmitidos.

Conservación del Orden de los Datos. Los datos llegan en el orden en que se emitieron.

No Duplicación de los Datos. El Dato sólo llega una vez.

Comunicación en modo conectado. La conexión está establecida antes de iniciar la comunicación. De este modo, la emisión desde un extremo va destinada al otro (implícitamente).

Componentes de la Arquitectura

Servidor: es el programa que permanece pasivo a la espera de que alguien solicite conexión con él.

  • Está ejecutándose y esperando a que otro quiera conectarse a él.
  • Sirve la información que se le pida.

Cliente: es el programa que solicita la conexión para pedir datos al servidor

  • En el momento de ejecutarlo o cuando lo necesite, intenta conectarse al servidor.
  • Solicita información al servidor.

Proceso

El servidor creará un socket, utilizando ServerSocket, le asignará un puerto y una dirección, una vez haga el accept para esperar llamadas, se quedará bloqueado a la espera de las mismas. Una vez llegue una llamada el accept creará un Socket para procesarla.

A su vez, cuando un cliente desee establecer una conexión, creará un socket y establecerá una conexión al puerto establecido. Sólo es en este momento, cuando se da una conexión real y se mantendrá hasta su liberación mediante close().

Para poder leer y escribir datos, los sockets disponen de unos stream asociados, uno de entrada (InputStream) y otro de salida (OutputStream) respectivamente. Para obtener estos streams a partir del socket se utiliza:

  • ObjetoDeTipoSocket.getInputStream ()
    Devuelve un objeto de tipo InputStream.
  • ObjetoDeTipoSocket.getOutputStream ()
    Devuelve un objeto de tipo OutputStream.

Para leer los datos se necesita un BufferedReader y para escribirlos un PrintWriter.

Al momento de enviarlos debe invocarse el método objPrintWriter.flush()

Conclusiones

Los sockets stream presentan muchas ventajas frente a los socket datagrama, por esta razón son el tipo de sockets más utilizado. Además, su funcionamiento es fácil de entender y sencillo de implementar, por lo tanto, a pesar de que existen otras herramientas como RMI o web socket siguen siendo utilizados.

Referencias

  • Martin Santana, A. & Martínez Santana, L. (2008). Diseño de Sistemas Operativos. Noviembre 11, 2017, de Universidad de las Palmas de Gran Canaria Sitio web: http://sopa.dis.ulpgc.es/ii-dso/leclinux/ipc/sockets/sockets.pdf
  • Liu, M. L. (2004). Computación Distribuida: Fundamentos y Aplicaciones. Madrid: PEARSON EDUCACIÓN, S.A.
  • Arias, J. ( 2000). Programación de aplicaciones distribuidas usando sockets. Noviembre 10, 2017, de Universidad de Oviedo Sitio web: http://www.atc.uniovi.es/inf_superior/atc/DISTRIBUIDAS/prog_ap_dist_sock.pdf
  • No hay comentarios:

    Publicar un comentario

    Sistemas Heredados

    Conclusiones Los sistemas heredados pueden llegar a representar la base de la funcionalidad de una empresa, además de contener informa...