STUN Client | Ritrasmissioni UDP

Quando si esegue STUN su UDP, è possibile che il messaggio STUN venga scartato dalla rete. L'affidabilità delle transazioni richiesta/risposta STUN viene garantita attraverso la ritrasmissione del messaggio di richiesta da parte dell'applicazione client stessa.

 

Un client dovrebbe ritrasmettere un messaggio di richiesta STUN a partire da un intervallo di RTO ("Retransmission TimeOut"), raddoppiando dopo ogni ritrasmissione. L'RTO è una stima del tempo di andata e ritorno.

 

Per impostazione predefinita, lo STUN Client di sgcWebSockets è già configurato con un RTO di 500 ms e un valore Max Retries di 7.

 

Ad esempio, supponendo un RTO di 500 ms, le richieste verrebbero inviate agli istanti 0 ms, 500 ms, 1500 ms, 3500 ms, 7500 ms, 15500 ms e 31500 ms. Se il client non ha ricevuto una risposta dopo 39500 ms, considererà la transazione come scaduta.

 


oSTUN := TsgcSTUNClient.Create(nil);
oSTUN.Host := 'stun.sgcwebsockets.com';
oSTUN.Port := 3478;
oSTUN.RetransmissionOptions.Enabled := true;
oSTUN.RetransmissionOptions.RTO := 500;
oSTUN.RetransmissionOptions.MaxRetries := 7;
oSTUN.SendRequest;