SocketTimeouts

Définit les timeouts pour recevoir et envoyer des données sur une socket système

bool  SocketTimeouts(
   int           socket,               // socket
   uint          timeout_send_ms,      // timeout d'envoi des données
   uint          timeout_receive_ms    // timeout d'obtention des données
   );

Paramètres

socket

[in]  Handle de la socket retournée par la fonction SocketCreate. Lorsqu'un handle incorrect est passé, l'erreur 5270 (ERR_NETSOCKET_INVALIDHANDLE) est écrite dans _LastError.

timeout_send_ms

[in]  Timeout d'envoi des données en millisecondes.

timeout_receive_ms

[in]  Timeout d'obtention des données en millisecondes.

Valeur de Retour

Retourne true en cas de succès, sinon false.

Note

Ne confondez pas les timeouts des objets systèmes avec ceux définis lors de la lecture des données via SocketRead. SocketTimeout définit les timeouts une seule fois pour une socket dans le système d'exploitation. Ces timeouts sont appliqués à toutes les fonctions pour la lecture et l'envoi des données via cette socket. Dans SocketRead, le timeout est défini pour une certaine opération de lecture des données.

La fonction ne peut être appelée que depuis les Expert Advisors et les scripts, puisqu'ils sont exécutés dans leurs propres threads d'exécution. Si elle est appelée depuis un indicateur, GetLastError() retourne l'erreur 4014 — "Function is not allowed for call".

Exemple :

//+------------------------------------------------------------------+
//|                                               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)
  {
//--- crée une socket et récupère son handle
   int socket=SocketCreate();
 
   if(socket==INVALID_HANDLE)
     {
      Print("SocketCreate() failed. Error ",GetLastError());
      return;
     }
//--- définit les délais d'attente pour la réception et l'envoi de données pour un objet système 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());
//--- ferme la socket
   SocketClose(socket);
  }