Componente TsgcSTUNClient.
TsgcSTUNClient es el cliente que implementa el protocolo STUN y permite enviar solicitudes de vinculación a servidores STUN.
El componente permite utilizar UDP y TCP como transporte. Al usar UDP como transporte, implementa un mecanismo de retransmisión para reenviar las solicitudes si la respuesta no ha llegado tras un breve intervalo.
Normalmente los servidores STUN funcionan en el puerto UDP 3478 y no requieren autenticación, por lo que para enviar una solicitud de binding STUN, rellene las propiedades del servidor para que el cliente sepa a dónde conectarse y gestione los eventos donde el componente recibirá la respuesta del servidor.
Configurar el servidor
Llame al método SendRequest, para enviar una solicitud de enlace al servidor STUN.
Gestionar los eventos
Si el servidor devuelve una respuesta satisfactoria, se llamará al evento OnSTUNResponseSuccess y podrá acceder a la información de enlace leyendo el objeto 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;