AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Ayuda / Tutorial WINDEV / Tutorial - Base de datos externa
  • Esta lección abarcará los siguientes temas
  • Presentación
  • Aplicación Servidor: servidor simplificado
  • Creación del socket
  • Intercambio de datos
  • Cierre del socket
  • Aplicación Cliente
  • Conexión al servidor
  • Intercambio de datos
  • Fin de la comunicación
  • Ejemplo práctico
  • Prueba del ejemplo
  • Análisis del código utilizado
Lección 7.7. Sockets
Esta lección abarcará los siguientes temas
  • Presentación.
  • Aplicación Servidor.
  • Aplicación Cliente.
Duración de la lección

Tiempo estimado: 20 min
Lección anteriorTabla de contenidoSiguiente lección
Presentación
WINDEV incluye funciones avanzadas de gestión de sockets.
Un socket es un recurso utilizado por las aplicaciones para comunicarse de un equipo a otro, independientemente del tipo de red.
Este modo de comunicación se utiliza para establecer la comunicación entre dos aplicaciones que se encuentran en equipos diferentes (conectados a través de Internet o en la misma red local) o en el mismo equipo.
Las aplicaciones WINDEV pueden gestionar sockets según diferentes modos:
  • Aplicación WINDEV Cliente: la aplicación se conecta a cualquier servidor e intercambia datos a través de un socket.
  • Aplicación WINDEV, WEBDEV o WINDEV Mobile "Servidor": la aplicación WINDEV, WEBDEV o WINDEV Mobile es un servidor que intercambia información a través de sockets con distintas máquinas cliente. Para gestionar varias conexiones simultáneas, es necesario utilizar hilos.

Ejemplo

WINDEV incluye un ejemplo didáctico que permite entender el uso de los sockets: "WD Using sockets". Puede acceder a este ejemplo desde la página de inicio de WINDEV (Ctrl + <).
Aplicación Servidor: servidor simplificado
WINDEV le ofrece la posibilidad de crear un servidor de sockets simplificado. Este servidor establece la comunicación con un solo equipo cliente a la vez. Este tipo de aplicación es muy útil cuando se debe establecer una comunicación entre dos aplicaciones remotas.
Las etapas para crear un servidor simplificado son las siguientes:
  1. Creación del socket.
  2. Intercambio de datos.
  3. Cierre del socket.

Creación del socket

Para crear el socket, el servidor utiliza la función SocketCreate. Un socket está enlazado a un puerto específico. Para utilizar sockets fácilmente mediante programación en el servidor, especifique el nombre del socket.
La máquina cliente se conectará al socket para intercambiar datos. La conexión se establecerá realmente cuando las dos máquinas intercambien datos por primera vez (es decir, cuando el servidor lea la información por primera vez).
La conexión se establece la primera vez que la función SocketRead lee la información en el servidor.

Intercambio de datos

Cuando dos máquinas utilizan el mismo socket, se establece un flujo de comunicación entre ellas. Estas dos máquinas pueden leer y escribir cadenas de caracteres en el socket.
Observación: Para no bloquear las aplicaciones, los mensajes entrantes se pueden gestionar mediante un hilo específico.
Para leer y escribir datos en el socket, la aplicación servidor de WINDEV debe utilizar las funciones SocketRead y SocketWrite.
Atención: Para iniciar una operación de lectura, debe haberse realizado previamente una operación de escritura. Por ejemplo:
  1. La máquina cliente escribe en el socket: envía una solicitud al servidor.
  2. El servidor lee los datos del socket en un hilo. Cuando se recibe un mensaje, el servidor lo procesa.
  3. Si se requiere una respuesta al mensaje, el servidor identifica la máquina cliente (función SocketClientInfo) y envía una respuesta.

Cierre del socket

Para finalizar la comunicación, el servidor puede cerrar el socket con la función SocketClose.
Observación: la máquina cliente también puede cerrar el socket.
Aplicación Cliente
Una aplicación cliente de un servidor de sockets se conecta a un servidor estándar para intercambiar información a través de un socket.
Ejemplo: Una aplicación WINDEV cliente puede conectarse a un servidor de noticias estándar en Internet.
Los pasos para crear una aplicación cliente son los siguientes:
  1. Conexión al servidor
  2. Intercambio de datos.
  3. Fin de la comunicación

Conexión al servidor

Para conectarse a un socket del servidor, utilice la función SocketConnect. Esta función realiza una solicitud de conexión al servidor.
El socket se identifica por su puerto y dirección.

Intercambio de datos

Cuando dos máquinas utilizan el mismo socket, se establece un flujo de comunicación entre ellas. Estas dos máquinas pueden leer y escribir cadenas de caracteres en el socket.
Observación: Para no bloquear las aplicaciones, los mensajes entrantes se pueden gestionar mediante un hilo específico.
Para leer y escribir datos en el socket, la aplicación cliente WINDEV debe utilizar las funciones SocketRead y SocketWrite.

Fin de la comunicación

Para finalizar la comunicación, cierre el socket desde la máquina cliente con la función SocketClose.
Observación: también puede finalizar la comunicación desde el servidor.
Ejemplo práctico
Veremos un ejemplo real sobre la programación de sockets a través del ejemplo unitario "Using sockets".

Prueba del ejemplo

  • Abra el ejemplo unitario "Using sockets".
  • Pruebe la ventana "WIN_Socket". Se enviará un mensaje de la máquina B a la máquina A. La máquina A es la aplicación Servidor y la máquina B es la aplicación Cliente.
    1. En la máquina A, haga clic en el botón "Create" para crear el socket.
    2. La máquina B puede conectarse al socket creado por la máquina A. Haga clic en el botón "Connect" (en la sección Computer B).
    3. La máquina B envía un mensaje a la máquina A:
      • Escriba el mensaje que desea enviar en el campo "Sentence to send to computer A".
      • Haga clic en "Send" en el área "Computer B".
    4. Para recuperar el mensaje en la máquina A, haga clic en el botón "Get" en el área "Computer A".
    5. Haga clic en los botones "Disonnect" para desconectar las dos máquinas.
  • Detenga la prueba de la ventana para volver al editor.

Análisis del código utilizado

  • Veamos el código de los diferentes botones que hemos utilizado.
  • Primero, analizaremos los procesos realizados por el servidor de sockets (máquina A).
    1. Abra el código del botón "Create" en el área "Computer A":
      • Seleccione el botón "Create".
      • Pulse F2 para abrir los eventos.
    2. En el evento "Clic", verá la función SocketCreate, que permite crear el socket. Cierre el editor de código.
    3. Abra el código del botón "Get" en el área "Computer A":
      • Seleccione el botón "Get".
      • Pulse F2 para abrir los eventos.
    4. El siguiente código se utiliza en el evento "Clic":
      EDT_SentenceReceivedFromComputerB = SocketRead("ComputerA", False, 2000)
      IF EDT_SentenceReceivedFromComputerB <> "" THEN
      Info("Message received from the IP address # " + SocketClientInfo("ComputerA", SocketAddress))
      END
      La función SocketRead lee el socket creado anteriormente. El mensaje leído se muestra inmediatamente en el control "EDT_SentenceReceivedFromComputerB". Cierre el editor de código.
  • Veamos los procesos realizados por el cliente (máquina B).
    1. Abra el código del botón "Connect" en el área "Computer B":
      • Seleccione el botón "Connect".
      • Pulse F2 para abrir los eventos.
    2. En el evento "Clic", verá la función SocketConnect, que permite conectarse al socket creado por la máquina A. Cierre el editor de código.
    3. Abra el código del botón "Send" en el área "Computer B":
      • Seleccione el botón "Send".
      • Pulse F2 para abrir los eventos.
    4. El siguiente código se utiliza en el evento "Clic":
      IF NOT SocketWrite("ForComputerA", EDT_SentenceToSendToComputerA) THEN
      Error(ErrorInfo(errMessage))
      RETURN
      END
      SocketWrite envía un mensaje al socket al que está conectado la máquina B. Cierre el editor de código.
Observación: En esta lección, hemos visto una comunicación "simple" entre un servidor y una máquina cliente: el cliente envía mensajes y el servidor los procesa. También es posible crear aplicaciones más complejas.
La comunicación también puede establecerse entre dos aplicaciones, tanto cliente como servidor. En este caso, los hilos son muy útiles para gestionar los mensajes enviados y las respuestas.
Lección anteriorTabla de contenidoSiguiente lección
Versión mínima requerida
  • Versión 28
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 09/02/2023

Señalar un error o enviar una sugerencia | Ayuda local