Komponent TsgcSTUNClient.
TsgcSTUNClient to klient implementujący protokół STUN, który umożliwia wysyłanie żądań wiązania do serwerów STUN.
Komponent umożliwia używanie UDP i TCP jako transportu. Przy użyciu UDP jako transportu implementuje mechanizm retransmisji umożliwiający ponowne wysyłanie żądań, jeśli odpowiedź nie nadejdzie po krótkim czasie.
Zazwyczaj serwery STUN działają na porcie UDP 3478 i nie wymagają uwierzytelnienia. Aby wysłać żądanie wiązania STUN, należy wypełnić właściwości serwera, aby klient wiedział, z czym się połączyć, oraz obsłużyć zdarzenia, w których komponent otrzyma odpowiedź od serwera.
Konfiguracja serwera
Należy wywołać metodę SendRequest, aby wysłać żądanie do serwera STUN.
Obsługa zdarzeń
Jeśli serwer zwróci pomyślną odpowiedź, wywoływane jest zdarzenie OnSTUNResponseSuccess i można uzyskać dostęp do informacji o powiązaniu, odczytując obiekt 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;