SocketTimeouts

Imposta i timeout per la ricezione e l'invio di dati per un oggetto di sistema socket.

bool  SocketTimeouts(
   int           socket,               // socket
   uint          timeout_send_ms,      // timeout di invio dati
   uint          timeout_receive_ms    // timeout ottenimento dati
   );

Parametri

socket

[in] Handle del socket restituito dalla funzione SocketCreate. Quando viene passato un handle errato, viene scritto l'errore 5270 (ERR_NETSOCKET_INVALIDHANDLE) _LastError.

timeout_send_ms

[in] Timeout di invio dati, in millisecondi.

timeout_receive_ms

[in] Timeout di ottenimento dati, in millisecondi.

Valore di Ritorno

Restituisce true se ha successo, altrimenti false.

Nota

Non confondere i timeout degli oggetti di sistema con quelli impostati durante la lettura dei dati tramite SocketRead. SocketTimeout imposta una volta i timeout per un oggetto socket nel sistema operativo. Questi timeout devono essere applicati a tutte le funzioni per la lettura e l'invio di dati tramite questo socket. In SocketRead, il timeout è impostato per una determinata operazione di lettura dei dati.

La funzione può essere chiamata solo da Expert Advisors e scripts, poiché vengono eseguiti nei relativi thread di esecuzione. Se si chiama da un indicatore, GetLastError() restituisce l'errore 4014 - "Function is not allowed for call (la funzione non è consentita per la chiamata)".

Esempio:

//+------------------------------------------------------------------+
//|                                               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)
  {
//--- creare un socket e ottenere il suo handle (gestore)
   int socket=SocketCreate();
 
   if(socket==INVALID_HANDLE)
     {
      Print("SocketCreate() failed. Error ",GetLastError());
      return;
     }
//--- impostare i tempi di attesa per la ricezione e l'invio dei dati per un oggetto del sistema 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());
//--- chiudere il socket
   SocketClose(socket);
  }

Il sito usa i cookie. Scopri di più sulla nostra Informativa sui cookie.