En 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.
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.
Programa Servidor TCP
Programa Cliente TCP
Los resultados tanto del servidor como cliente tendrán un aspecto parecido al siguiente:
Servidor TCP
Cliente TCP
comments powered by Disqus