AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Comunicación / Sockets
  • Presentación
  • Principio de comunicación de sockets
  • Etapa 1: Creación del socket
  • Etapa 2: En espera de la conexión a la toma de corriente
  • Ejemplo
  • Etapa 3: Intercambio de datos
  • Etapa 4: Fin de la comunicación
  • Modo de transmisión de la información
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
WINDEV le permite crear un servidor de socket estándar. Este servidor se utiliza para gestionar la conexión de varios ordenadores cliente en el mismo socket. Este principio se utiliza para crear un servidor de noticias, por ejemplo.
Principio de comunicación de sockets

Etapa 1: Creación del socket

Para crear el socket, el servidor utiliza la función SocketCreate. Un socket está enlazado a un puerto específico. Se pueden crear varios sockets, cada socket utilizando un número de puerto específico. Un nombre (usado para manipular el zócalo por programación) y un número de puerto son associated con cada zócalo.

Etapa 2: En espera de la conexión a la toma de corriente

Todos los ordenadores que quieran comunicarse con el servidor pueden conectarse al socket: estos son los ordenadores de los clientes. El servidor gestiona las diferentes solicitudes de conexión de los ordenadores clientes a través de SocketWaitForConnection. Esta función le permite saber si una solicitud de conexión se realiza en un zócalo específico.
Se recomienda utilizar SocketWaitForConnection en un thread específico. Por lo tanto, esta función se realiza en la tarea de Background. Cuando se detecta una solicitud de conexión, puede hacerlo:
  • aceptar la conexión (SocketAccept): en este caso, se crea un canal de comunicación específico. Para evitar el bloqueo de las aplicaciones, los mensajes entrantes suelen ser gestionados por una Thread específica (para más detalles, véase Gestión de los hilos de discusión).
  • rechazar la conexión (SocketDeny).

Ejemplo

El siguiente ejemplo se utiliza para crear un zócalo en el servidor y para gestionar las conexiones de los ordenadores clientes en un thread. Si la conexión es aceptada, la gestión de esta conexión la realiza un thread específico.
Se ejecuta una Thread para cada conexión. Cada thread utiliza la misma función de servicio ("ManagementProcedure"). Para permitir que la Procedure funcione con varios hilos al mismo tiempo, se debe cambiar el modo de sincronización de los hilos: utilice la función ThreadMode con la constante threadCriticalSection en el código de inicialización del proyecto. La sincronización entre hilos debe hacerse manualmente (para más detalles, véase la ayuda sobre los hilos).
Para diferenciar los thread s, el nombre de cada thread corresponde al nombre del canal de comunicación (nombre único).
IF NOT SocketCreate("Server", 8000) THEN
Error("creation error" + ErrorInfo(errMessage))
ELSE
ThreadExécute("Thread1", threadNormal, WaitProcedure)
END
PROCÉDURE WaitProcedure()
LOOP
IF SocketWaitForConnection("Server") THEN
Channel is string
Channel = SocketAccept("Server")
ThreadExécute(Channel, threadNormal, ProcedureManagement, Channel)
END
END

Etapa 3: Intercambio de datos

Cuando dos máquinas utilizan el mismo socket, se establece un canal de comunicación entre ellas. Estas dos máquinas pueden leer y escribir cadenas de caracteres en el socket.
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 realiza una operación de lectura en el zócalo de un thread. Cuando se recibe un mensaje, el servidor lo procesa.
  3. Si se requiere una respuesta al mensaje, el servidor identifica el ordenador cliente y le envía una respuesta..

Etapa 4: Fin de la comunicación

Para finalizar la comunicación, basta con cerrar el socket con SocketClose.
Modo de transmisión de la información
El modo de transmisión del mensaje define el modo utilizado para especificar la longitud del mensaje.
Se pueden utilizar varios métodos para definir la longitud del mensaje durante la comunicación entre sockets.
  • Método 1: Modo WINDEV: Por Default, el número de caracteres en el mensaje se especifica al principio del mensaje. Este modo de transmisión se recomienda cuando los sockets se utilizan para comunicarse entre dos aplicaciones WINDEV..
    El mensaje tiene el siguiente formato: "11\r\nHelloWord"
  • Método 2: modo estándar: El final del mensaje se señala con un carácter específico, definido de antemano. Este modo de transmisión se recomienda cuando los sockets se utilizan para comunicarse entre una aplicación WINDEV y otra aplicación.. En este caso, debe incluirse un carácter específico en el mensaje para indicar que el mensaje ha terminado..
    El mensaje tiene el siguiente formato: "Hola mundo<EOF>"
  • Método 3: modo estándar con buffer: Corresponde al modo estándar optimizado para los protocolos más utilizados en INTERNET.
SocketChangeTransmissionMode permite modificar el modo de transmisión utilizado.
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 27/05/2022

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