Composant TsgcSTUNClient.
TsgcSTUNClient est le client qui implémente le protocole STUN et vous permet d'envoyer des requêtes de liaison aux serveurs STUN.
Le composant vous permet d'utiliser UDP et TCP comme transport. Lors de l'utilisation d'UDP comme transport, il implémente un mécanisme de retransmission pour renvoyer les requêtes si la réponse n'est pas arrivée après un court délai.
Habituellement, les serveurs STUN fonctionnent sur le port UDP 3478 et ne nécessitent pas d'authentification. Pour envoyer une requête de liaison STUN, renseignez les propriétés du serveur afin que le client sache où se connecter, et gérez les événements où le composant recevra la réponse du serveur.
Configurer le serveur
Appelez la méthode SendRequest, pour envoyer une requête de liaison au serveur STUN.
Gérer les événements
Si le serveur retourne une réponse réussie, l'événement OnSTUNResponseSuccess sera appelé et vous pouvez accéder aux informations de liaison en lisant l'objet aBinding.
oSTUN := TsgcSTUNClient.Create(nil);
oSTUN.Host := 'stun.sgcwebsockets.com';
oSTUN.Port := 3478;
oSTUN.SendRequest;
procedure OnSTUNResponseSuccess(Sender: TObject; const aSocket: TsgcSocketConnection;
const aMessage: TsgcSTUN_Message; const aBinding: TsgcSTUN_ResponseBinding);
begin
DoLog('Remote IP: ' + aBinding.RemoteIP + '. Remote Port: ' + IntToStr(aBinding.RemotePort));
end;
procedure OnSTUNResponseError(Sender: TObject; const aSocket: TsgcSocketConnection;
const aMessage: TsgcSTUN_Message; const aError: TsgcSTUN_ResponseError);
begin
DoLog('Error: ' + IntToStr(aError.Code) + ' ' + aError.Reason);
end;