Bienvenidos a Iseries Venezuela

Las mejores prácticas, recursos, tips, enlaces, videos y artículos para informáticos relacionados con el Iseries y el As/400 lenguajes de programación RPG, ILE RPG y SQL.

The best practices, resources, tips, links, videoes and articles for computer related to the Iseries and the As/400 languages of programming RPG, ILE RPG and SQL.

Sunday, August 1, 2010

¿Que es un Socket?













                                                                                      (Click en la imagen para agrandarla)

Un Socket es un punto de conexión de comunicaciones que posee un nombre y dirección en una red. Digamos que actua como “un enchufe virtual” que permite el envío y la recepción de data en un entorno de red.

Una forma de conseguir que dos programas se transmitan datos, basada en el protocolo TCP/IP, es la programación de sockets. Un socket no es más que un "canal de comunicación" entre dos programas que corren sobre ordenadores distintos    o incluso en el mismo ordenador.

Desde el punto de vista de programación, un socket no es más que un "archivo" que se abre de una manera especial. Una vez abierto se pueden escribir y leer datos de él con las habituales funciones de read() y write() del lenguaje C. (en RPG se invoca a procedures realizados en C) Hablaremos de todo esto con detalle más adelante.

 Los procesos que usan un socket pueden residir sobre el mismo sistema o en  sistemas diferentes sobre diferentes redes. Los Sockets son útiles porque  permiten
 cambiar la información entre procesos sobre la misma máquina o a través de una red, distribuir el trabajo a la máquina más eficiente, y permite al acceso a datos centralizados fácilmente.. OS/400 soporta sockets de múltiples transportes y protocolos conectados a una red.
 Los Sockets comúnmente son usados para la interacción de cliente/servidor. La configuración de sistema típica coloca al servidor sobre una máquina, con los clientes sobre otras máquinas. Los clientes se unen al servidor, cambian la información, y luego se desconectan.

LA CONEXIÓN

Para poder realizar la conexión entre ambos programas son necesarias varias cosas:
·         Dirección IP del servidor.
·         Servicio que queremos crear / utilizar.


Un servicio es una comunicación a la cual le asignamos un nombre y le asociamos un puerto de conexión.
Nosotros elegimos el número del puerto. Se recomienda elegir números de 7001 en adelante. Cuando abrimos la comunicación en un programa RPG o en C, mediante una instrucción BIND debemos especificar en este comando el nombre del servicio para que mediante este nombre el sistema operativo acceda al número del puerto que definimos en las tablas. En otro tipo de programación en vez del nombre del servicio, se requiere directamente el número de puerto.

 Es a través de este “enchufe” virtual que creamos con el comando ADDSRVTBLE  que hace que nos aparezca la pantalla que está adjunta en este artículo cuando especificamos el servicio y el puerto.
 El programa que reside en la máquina cliente y el programa que reside en el servidor envían y reciben data en forma única. Es decir, no se está mezclando data de otros servidores ni de otros clientes, puesto que los programas que están instalados en ambos equipos abrieron la comunicación con este número de puerto establecido por convención previa en el código de programación.

Si se desea ofrecer otro servicio a otro cliente por este mismo servidor, se declara otro puerto y servicio en la tabla y esos otros  programas de comunicación envían y reciben data a través de este otro servicio.

Para el próximo artículo veremos mas detalles del cliente y el servidor, y los comandos Sockets dentro de los programas.

Si quieren bajar programas que manejan  socket realizados en RPG pueden leer la página de Scott Klement, quien además tiene un excelente tutorial en línea y en PDF accesible tanto para expertos como a neófitos en la materia. La Página es: www.scottklement.com


Bibliografía en la web:




Autor: Ing. Liliana Suárez.


Si te pareció interesante el artículo reenvíalo a un amigo, haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo.

No comments: