SocketTimeouts

Establece el límite de tiempo para obtener y enviar los datos para el objeto de sistema del socket.

bool  SocketTimeouts(
   int           socket,               // socket
   uint          timeout_send_ms,      // límite de tiempo de envío de datos
   uint          timeout_receive_ms    // límite de tiempo de obtención de datos
   );

Parámetros

socket

[in]  Manejador del socket retornado por la función SocketCreate. Al transmitir un manejador incorrecto, en _LastError se registra el error 5270 (ERR_NETSOCKET_INVALIDHANDLE).

timeout_send_ms

[in]  Límite de tiempo de envío de datos en milisegundos.

timeout_receive_ms

[in]  Límite de tiempo de obtención de datos en milisegundos.

Valor retornado

Retorna true en caso de éxito, de lo contrario, false.

Observación

No confunda los límites de tiempo de los objetos de sistema con los límites de tiempo establecidos al leer datos a través de SocketRead. SocketTimeout establece los límites de tiempo una vez para el objeto del socket en el sistema operativo. Estos límites de tiempo se aplican a todas las funciones de lectura y envío de datos a través de este socket. En SocketRead, el límite de tiempo se establece para una operación concreta de lectura de datos.

Solo se puede llamar la función desde los expertos y scripts, puesto que funcionan en su propio flujo de ejecución. Si se llama desde el indicador, GetLastError() retornará el error 4014 — "La función de sistema no está permitida para la llamada".

Ejemplo:

//+------------------------------------------------------------------+
//|                                               SocketTimeouts.mq5 |
//|                                  Copyright 2024, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com
#property version     "1.00"
 
#define   TIMEOUT_SEND     5000
#define   TIMEOUT_RECEIVE  5000
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart(void)
  {
//--- creamos un socket y obtenemos su handle
   int socket=SocketCreate();
 
   if(socket==INVALID_HANDLE)
     {
      Print("SocketCreate() failed. Error ",GetLastError());
      return;
     }
//--- establecemos los timeout para recibir y enviar datos para el objeto de sistema de socket
   if(SocketTimeouts(socket,TIMEOUT_SEND,TIMEOUT_RECEIVE))
      PrintFormat("timeouts were successfully set",socket,TIMEOUT_SEND,TIMEOUT_RECEIVE);
   else
      PrintFormat("SocketTimeouts(%d, %I64d, %I64d) failed. Error %d",socket,TIMEOUT_SEND,TIMEOUT_RECEIVE,GetLastError());
//--- cerramos el socket
   SocketClose(socket);
  }

Esta página utiliza cookies. Aprenda más sobre ellas en nuestra Política sobre Cookies.