Sockets Cliente ServidorEn la actualidad, muchos de los procesos que se ejecutan en una computadora requieren obtener o enviar información a otros procesos que se localizan en una computadora diferente.  Para lograr esta comunicación  se  utilizan los protocolos de comunicación TCP y UDP.

El protocolo TCP (Transmission Control Protocol) establece un conducto de comunicación punto a punto entre dos computadoras, es decir, cuando se requiere la transmisión de un flujo de datos entre dos equipos, el protocolo TCP establece un conducto exclusivo entre dichos equipos por el cual los datos serán transmitidos y este perdurará hasta que la transmisión haya finalizado, gracias a esto TCP garantiza que los datos enviados de un extremo de la conexión lleguen al otro extremo y en el mismo orden en que fueron enviados. Las características que posee TCP hacen que el protocolo sea conocido como un protocolo orientado a conexión.

Mientras tanto también existe un protocolo no orientado a la conexión llamado UDP. El protocolo UDP no es orientado a la conexión debido a que la forma de trasmitir los datos no garantiza en primera instancia su llegada al destino, e incluso si este llegara al destino final, tampoco garantiza la integridad de los datos. UPD hace la transmisión de los datos sin establecer un conducto de comunicación exclusiva como lo hace TCP, además utiliza datagramas, los cuales contienen una porción de la información y que son enviados a la red en espera de ser capturados por el equipo destino. Cuando el destino captura los datagramas debe reconstruir la información, para esto debe ordenar la información que recibe ya que la información transmitida no viene con un orden específico, además se  debe tener conciencia de que no toda la información va a llegar. El funcionamiento del protocolo UDP se puede comparar con el servicio postal.

Sockets

Los sockets son una forma de comunicación entre procesos que se encuentran en diferentes máquinas de una red, los sockets proporcionan un punto de comunicación por el cual se puede enviar o recibir información entre procesos.

Los sockets tienen un ciclo de vida dependiendo si son sockets de servidor, que esperan a un cliente para establecer una comunicación, o socket cliente que busca a un socket de servidor para establecer la comunicación.

Cliente - Servidor

Implementación de Sockets en Java

El lenguaje de programación JAVA incluye la biblioteca Java.net que proporciona tanto los sockets TCP como UDP:

Clases para los sockets TCP

Clase

Descripción

Socket

Esta clase implementa sockets del cliente

Un socket es uno de los extremos en la comunicación entre dos máquinas.

ServerSocket

Esta clase implementa sockets del servidor. Un socket del servidor espera a que una solicitud provenga de la red; lleva a cabo determinadas operaciones basadas en la solicitud recibida; y entonces, posiblemente, retorna un resultado al solicitante.

Clases para los sockets UDP

Clase

Descripción

DatagramPacket

Esta clase representa un paquete datagrama.

Los paquetes datagramas son usados para implementar el servicio de entrega de paquetes sin conexión. Cada mensaje es enrutado desde una máquina a otra con base en la información contenida dentro del paquete, únicamente. Cuando se envían múltiples paquetes de una máquina a otra, estos pueden seguir diferentes rutas, y pueden llegar en cualquier orden. La entrega de paquetes no está garantizada.

DatagramSocket

Esta clase representa un socket para enviar y recibir paquetes datagrama.

Ejemplos de Sockets TCP

A continuación se muestran dos fragmentos de código en java que hacen uso de sockets TCP, el código se trata de una aplicación que actúa como cliente y otra como servidor, que enviará un mensaje en cadena de caracteres y recibirá una respuesta en cadena de caracteres.

Servidor TCP

Programa Servidor TCP

 Cliente TCP

Programa Cliente TCP

Los resultados tanto del servidor como cliente tendrán un aspecto parecido al siguiente:

Servidor TCP

Servidor TCP

Cliente TCP

Cliente TCP

 

comments powered by Disqus