0% encontró este documento útil (0 votos)
79 vistas

Web Socket

Los sockets permiten la comunicación entre aplicaciones a través de una red mediante la creación de un punto final de conexión entre un cliente y un servidor. Los sockets se definen por una dirección IP, un puerto y un protocolo. El servidor crea un socket con nombre al que se conecta el cliente a través de su propio socket sin nombre, permitiendo el intercambio bidireccional de información.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
79 vistas

Web Socket

Los sockets permiten la comunicación entre aplicaciones a través de una red mediante la creación de un punto final de conexión entre un cliente y un servidor. Los sockets se definen por una dirección IP, un puerto y un protocolo. El servidor crea un socket con nombre al que se conecta el cliente a través de su propio socket sin nombre, permitiendo el intercambio bidireccional de información.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 6

INTRODUCCIÓN

La comunicación entre entidades abstractas (PCs) se logra utilizando diferentes


técnicas, una de ellas es utilizando sockets, que consiste en configurar una red cliente
servidor para establecer el flujo de información entre transmisor y receptor. Es posible
utilizar un protocolo orientado a conexión como TCP (Transfer Control Protocol) o uno
no orientado a conexión como UDP (User Datagram Protocol), la diferencia entre los
dos es la fiabilidad que se puede garantizar con un protocolo que garantice la conexión
con el extremo receptor, es decir que sea orientado a conexión.
Para que dos aplicaciones puedan intercambiar información entre sí se necesita:
• Un protocolo de comunicación común a nivel de red y a nivel de transporte.
• Una dirección del protocolo de red que identifique a cada uno de los computadores.
• Un número de puerto que identifique la aplicación dentro del computador
Los sockets se utilizan para poder enviar órdenes a un servidor que está atendiendo
nuestras peticiones. Por lo tanto, un socket quedaría definido por una dirección IP (La
del equipo que actúa como servidor), un protocolo y un número de puerto (El utilizado
para acceder a un servicio determinado).
A su vez, los sockets están basados en el protocolo de comunicaciones utilizado en
Internet: TCP (Transmisión Control Protocol).
La función del protocolo TCP es, ni más ni menos que la de traer y llevar información
desde un servidor a un cliente y viceversa utilizando los diferentes protocolos
utilizados por cada servicio.
¿QUÉ SON LOS SOCKETS?
Podemos encontrar diferentes definiciones, algunas de ellas son: Los sockets son un
método de comunicación entre un programa de cliente y uno de servidor a través de
una red. Un socket se define como “el extremo de una conexión”. Un socket, es un
método para la comunicación entre un programa del cliente y un programa del servidor
en una red. Un socket se define como el punto final en una conexión. Los sockets se
crean y se utilizan con un sistema de peticiones o de llamadas de función a veces
llamados interfaz de programación de aplicación de sockets (API, Application
Programming Interface).
Un socket es también una dirección de Internet, combinando una dirección IP (la
dirección numérica única de cuatro octetos que identifica a un computador particular
en Internet) y un número de puerto (el número que identifica una aplicación de Internet
particular) 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
¿CÓMO SE ESTABLECE LA COMUNICACIÓN CON SOCKETS?
El cliente y el servidor deben ponerse de acuerdo sobre el protocolo que utilizará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.
ORIENTADO A NO 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. Los sockets no son más que puntos o mecanismos de
comunicación entre procesos que permiten que un proceso hable (emita o reciba
información) con otro proceso incluso estando estos procesos en distintas máquinas.
Esta característica de interconectividad entre máquinas hace que el concepto de
socket nos sirva de gran utilidad. Un socket es al sistema de comunicación entre
computadores, lo que un buzón o un teléfono es al sistema de comunicación entre
personas: un punto de comunicación entre dos agentes (procesos o personas
respectivamente) por el cual se puede emitir o recibir información.
LA ARQUITECTURA CLIENTE-SERVIDOR
Es un modelo de aplicación distribuida en el que las tareas se reparten entre los
proveedores de recursos o servicios, llamados servidores, y los demandantes,
llamados clientes. Un programa cliente realiza peticiones a otro programa, el servidor,
que le da respuesta. Esta idea también se puede aplicar a programas que se ejecutan
sobre una sola máquina, aunque es más ventajosa en un sistema operativo
multiusuario distribuido a través de una red de computadores.
En esta arquitectura la capacidad de proceso está repartida entre los clientes y los
servidores. La separación entre cliente y servidor es una separación de tipo lógico,
donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es
necesariamente un sólo programa. Los tipos específicos de servidores incluyen los
servidores webs, los servidores de archivo, los servidores del correo, entre otros.
Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica
seguirá siendo la misma.
La comunicación entre procesos a través de sockets se basa en la filosofía cliente-
servidor: un proceso en esta comunicación actuará de proceso servidor creando un
socket cuyo nombre conocerá el proceso cliente, el cual podrá “hablar” con el proceso
servidor a través de la conexión con dicho socket nombrado.
El proceso crea un socket sin nombre cuyo valor de vuelta es un descriptor sobre el
que se leerá o escribirá, permitiéndose una comunicación bidireccional, característica
propia de los sockets. El mecanismo de comunicación vía sockets tiene los siguientes
pasos:
• El proceso servidor crea un socket con nombre y espera la conexión.
• El proceso cliente crea un socket sin nombre.
• El proceso cliente realiza una petición de conexión al socket servidor.
• El cliente realiza la conexión a través de su socket mientras el proceso servidor
mantiene el socket servidor original con nombre.
Es muy común en este tipo de comunicación lanzar un proceso hijo, una vez realizada
la conexión, que se ocupe del intercambio de información con el proceso cliente
mientras el proceso padre servidor sigue aceptando conexiones. Para eliminar esta
característica se cerrará el descriptor del socket servidor con nombre en cuanto realice
una conexión con un proceso socket cliente.
EL SERVIDOR
A partir de este punto comenzamos con lo que es la programación en C++ de los
sockets. Se debe poseer conocimientos de C++, de esta forma será más fácil el
atender el procedimiento a seguir.
Con C++ en Unix/Linux, los pasos que debe seguir un programa servidor son los
siguientes:
Realizar la apertura de un socket, mediante la función socket(). Esta función devuelve
un descriptor de archivo normal, como puede devolverlo open(). La función socket()
no hace absolutamente nada, salvo devolvernos y preparar un descriptor de fi chero
que el sistema posteriormente asociará a una conexión en red
Avisar al sistema operativo de que hemos abierto un socket y queremos que asocie
nuestro programa a dicho socket. Se consigue mediante la función bind(). El sistema
todavía no atenderá a las conexiones de clientes, simplemente anota que cuando
empiece a hacerlo, tendrá que avisarnos. Es en esta llamada cuando se debe indicar
el número de servicio al que se quiere atender.
Avisar al sistema de que comience a atender dicha conexión de red. Se consigue
mediante la función listen(). A partir de este momento el sistema operativo anotará la
conexión de cualquier cliente para pasárnosla cuando se lo pidamos. Si llegan clientes
más rápido de lo que somos capaces de atenderlos, el sistema operativo hace una
“cola” con ellos y nos los irá pasando según vayamos pidiéndolo.
Pedir y aceptar las conexiones de clientes al sistema operativo. Para ello hacemos una
llamada a la función accept(). Esta función le indica al sistema operativo que nos dé al
siguiente cliente de la cola. Si no hay clientes se quedará bloqueada hasta que algún
cliente se conecte.
Escribir y recibir datos del cliente, por medio de las funciones write() y read(), que son
exactamente las mismas que usamos para escribir o leer de un archivo. Obviamente,
tanto cliente como servidor deben saber qué datos esperan recibir, qué datos deben
enviar y en qué formato.
Cierre de la comunicación y del socket, por medio de la función close(), que es la
misma que sirve para cerrar un archivo.
EL CLIENTE
Los pasos que debe seguir un programa cliente son los siguientes:
Realizar la apertura de un socket, como el servidor, por medio de la función socket()
Solicitar conexión con el servidor por medio de la función connect(). Dicha función
quedará bloqueada hasta que el servidor acepte nuestra conexión o bien si no hay
servidor en el sitio indicado, saldrá dando un error. En esta llamada se debe facilitar la
dirección IP del servidor y el número de servicio que se desea
Escribir y recibir datos del servidor por medio de las funciones write() y read().
Cerrar la comunicación por medio de close().
Como se puede apreciar, el procedimiento en el cliente es mucho más sencillo que el
servidor, más sin embargo, se debe como mínimo garantizar en los dos extremos, un
paso de establecimiento de la comunicación, uno de transferencia de información y
uno mediante el cual se libera la comunicación
TIPOS DE SOCKETS
Todo socket viene definido por dos características fundamentales: El tipo del socket y
el dominio del socket.
El tipo del socket, que indica la naturaleza del mismo, el tipo de comunicación que
puede generarse entre los sockets.
El dominio del socket especifica el conjunto de sockets que pueden establecer una
comunicación con el mismo.
Los sockets definen las propiedades de las comunicaciones en las que se ven
envueltos, esto es, el tipo de comunicación que se puede dar entre cliente y servidor.
Estas pueden ser:
Fiabilidad de transmisión. Mantenimiento del orden de los datos. No duplicación de los
datos. El “Modo Conectado” en la comunicación. Envío de mensajes urgentes.

WEB SOCKETS

Web Sockets es una tecnología que permite crear aplicaciones capaces de recibir
información del servidor y actualizarse en tiempo real, sin necesidad de refrescar la
página.
La forma en que funciona Web Sockets es que el navegador, a través de JavaScript,
abre una conexión HTTP con el servidor y maniente esa conexión abierta para que
el servidor pueda enviarle información al navegador en cualquier momento.
Para que Web Sockets funcione se debe escribir código tanto en el cliente (con
JavaScript) como en el servidor (dependiendo del lenguaje que se utilice).

EL CLIENTE

La mayoría de navegadores hoy soportan Web Sockets. El código JavaScript


necesario para abrir una conexión y escuchar mensajes del servidor es el siguiente:
El servidor

El servidor se puede escribir en cualquier lenguaje de programación (Web Sockets es


una tecnología independiente del lenguaje). Para este ejemplo vamos a utilizar Node.js
con una librería llamada express-ws.

Algunas alternativas en otros lenguajes de programación incluyen:

SOCKET.IO

Socket.io es una librería de Node.js para desarrollar aplicaciones con WebSockets que
también incluye una librería para el cliente.
El desarrollo con Socket.io es parecido a lo que ya hemos visto, pero Socket.io ofrece
varias ventajas y funcionalidades interesantes:

 Reconexión automática.
 Canales (rooms) y eventos.
 Transimisión de imagen, audio y video.
 Soporte para navegadores antiguos (p.e. IE9 e IE8).

Veamos un ejemplo. En el cliente debes incluir la librería de Socket.io:

En el servidor:

También podría gustarte