Socket Datagrama
Introducción.
Se le conoce como socket al intermediario de la comunicación entre dos o más computadoras diferentes involucradas dentro de la misma red, ya que para realizar esta tarea, en ocasiones, es necesario utilizar y crear esta determinada programación, dicha comunicación puede ser orientada a conexión o sin conexión.
Esta tecnología se inventó durante la década de los 80, como una biblioteca de programación que servia para facilitar la comunicación dentro de un sistema operativo llamado UNIX, después de su creación, los sockets se vieron integrados en todos los sistemas operativos hasta nuestra fecha, ya que son de vital importancia dentro de las aplicaciones en red.
Asi mismo, para facilitar su uso y extensión, la API de sockets utiliza el lenguaje Java, además de que requiere de una sintaxis e interfaces muy simples que comparten un mismo modelo.
Algunos de los medios de transporte de datos, principalmente el protocolo de datagrama de usuario (UDP), realizan la comunicación entre los equipos por medio de paquetes, este paquete de datos compartido por los miembros del mensaje, se le denomina como datagrama, el cual es dirigido de forma independiente hasta llegar a su receptor sin importar el orden.
Es por ello que se le conoce como socket datagrama a aquellos sockets que utilizan el protocolo UDP para transportar la información, el cual es NO orientado a conexión.
"Los sockets son un sistema de comunicación entre procesos de diferentes máquinas de una red. Más exactamente, un socket es un punto de comunicación por el cual un proceso puede emitir o recibir información." (Socket programming with
UDP, 2006)
Desarrollo.
Los sockets tienen el propósito de establecer un punto de comunicación y conectarse a una computadora remota por medio de un puerto en el que haya disponibilidad, una vez dentro, puede transferir o recibir información y si lo desea, desconectarse del mismo, este proceso puede comprenderse análogamente al que realizan las líneas telefónicas. Esta comunicación se da comúnmente en el nivel de aplicación, y para que esta sea dada con éxito, se utilizan, dentro de la programación en Java, las siguientes clases:
- DatagramSocket: Esta clase es utilizada cuando el usuario requiera de mandar o recibir un dato a través de los sockets, para ello es necesario que el objeto instanciado a través de esta clase se enlace a un puerto local UDP del mismo equipo
- DatagramPacket: Esta clase se utiliza cuando se va a mandar un paquete datagrama a un proceso de comunicación externo y que aquel ya ha sido instanciado utilizando la clase DatagramSocket, para ello es necesario crear una referencia al contenedor de los datos que se van a enviar y la dirección a la que va a ser mandado.
(Para recibir la información es necesario utilizar el mismo proceso de la manera inversa, es decir, crear una clase DatagramSocket encargada de recibir el datagrama y enlazarla a un puerto UDP que debe ser igual a la dirección especificada al instanciar la clase DatagramPacket con la función de aceptar la información)
Una de las ventajas del uso de los sockets UDP es que estos no requieren de que otro usuario se conecte en el otro extremo del Socket para que el local pueda transmitir información, además de que al utilizar este protocolo, un programa puede recibir mensajes de varios sitios al mismo tiempo sin tener ningún conflicto, sin embargo, este protocolo no le asegura al usuario que el mensaje vaya a ser recibido por su destino, si es que lo hay, ya que existe la posibilidad de que este se pierda, otra desventaja es que si los mensajes llegan al destino, estos aparecerán en un orden distinto al que fueron enviados.
El siguiente es un ejemplo de la programación utilizada para un cliente que va a enviar información a un servidor y espera la recepción de datos a través del uso de los sockets datagrama:
En este ejemplo podemos ver como en una variable de tipo InetAdress se obtiene la dirección a la que se va a enviar el mensaje, así como la creación de objetos de tipo DatagramSocket y DatagramPacket, el cual contiene un arreglo de bits del mensaje que se va a enviar (pues esta es la única forma de hacerlo), el tamaño del dato, que no puede exceder cierta longitud preestablecida, la dirección del receptor y el puerto del equipo receptor. Una vez creado este último objeto, se manda el objeto del datagrama utilizando la subclase .send del objeto Datagram Socket, y finalmente se cierra.
En este ejemplo se ve el mismo proceso pero con un equipo receptor, el cual declara la longitud máxima que puede tener el dato, e inicializa los objetos de la clase DatagramSocket y DatagramPacket, en el cual, nuevamente incluye un arreglo de bits con los datos que se recibirán y la longitud máxima del dato, para que, a través de la subclase .receive coloque los datos dentro del datagrama y finalmente puedan ser interpretados.
Conclusión.
La tecnología de los sockets datagrama es la principal utilizada para transferir datos en sistemas no orientados a conexión, por lo que es indispensable de aprender a usar de la manera adecuada, ya que puede ser de mucha utilidad a la hora de crear redes locales y que estas estén lo mejor comunicadas, además, utilizando este sistema se pueden automatizar muchos procesos y mejorar la comunicación de un lugar, por ejemplo, en un campus escolar muy grande donde los profesores requieran de comunicarse con otro que esta del lado opuesto del campus podrían hacerlo si los sockets están bien configurados e incluso, e incluso, haciendo uso de las muchas herramientas de la programación, se pueden dar una inmensa cantidad de posibilidades dentro de estos sistemas. También se llegó a la conclusión de que este sistema en realidad es relativamente sencillo y se asemeja a los antiguos sistemas que se utilizaban en la telefonía donde se conecta directamente, por medio de, en este caso los sockets, al remitente con el destinatario para que estos puedan comunicarse entre sí.
Bibliografía.
Ejemplos Programción Socket -
Java. (8 de Junio de 2009). Obtenido
de
http://www.cartagena99.com/recursos/programacion/ejemplos/EJEMPLOS_PROGRAMACION_SOCKET.pdf
Liu, M. L. (2004). Computación
Distribuida. Fundamentos y Aplicaciones. Madrid: Pearson.
Socket programming with UDP. (20 de Febrero de 2006). Obtenido de
http://wiki.inf.utfsm.cl/index.php?title=Socket_programming_with_UDP



Comentarios
Publicar un comentario