STUN 客户端 | UDP 重传

UDP 上运行 STUN 时,STUN 消息可能会被网络丢弃。 STUN 请求/响应事务的可靠性通过客户端应用程序本身重传请求消息来实现。

 

客户端应从 RTO("重传超时")间隔开始重传 STUN 请求消息,每次重传后加倍。RTO 是往返时间的估算值。

 

默认情况下,sgcWebSockets STUN 客户端已配置为 RTO 500 ms 和最大重试次数 7 次。

 

例如,假设 RTO 为 500 毫秒,请求将在 0 毫秒、500 毫秒、1500 毫秒、3500 毫秒、7500 毫秒、15500 毫秒和 31500 毫秒时发出。如果客户端在 39500 毫秒后仍未收到响应,则认为事务已超时。

 


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;