TsgcSTUNClient-Komponente.
TsgcSTUNClient ist der Client, der das STUN-Protokoll implementiert und es Ihnen ermöglicht, Binding-Anfragen an STUN-Server zu senden.
Die Komponente ermöglicht die Verwendung von UDP und TCP als Transport. Bei Verwendung von UDP als Transport implementiert sie einen Retransmission-Mechanismus, um Anfragen erneut zu senden, wenn die Antwort nach kurzer Zeit nicht eingetroffen ist.
Normalerweise laufen STUN-Server auf UDP-Port 3478 und erfordern keine Authentifizierung. Um also ein STUN-Request-Binding zu senden, füllen Sie die Server-Eigenschaften aus, damit der Client weiß, wohin er sich verbinden soll, und behandeln Sie die Ereignisse, bei denen die Komponente die Antwort vom Server empfängt.
Den Server konfigurieren
Rufen Sie die Methode SendRequest auf, um eine Binding-Anfrage an den STUN-Server zu senden.
Behandeln Sie die Ereignisse
Wenn der Server eine erfolgreiche Antwort zurückgibt, wird das Ereignis OnSTUNResponseSuccess aufgerufen und Sie können auf die Binding-Informationen zugreifen, indem Sie das aBinding-Objekt lesen.
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;