Componente TsgcSTUNClient.
TsgcSTUNClient é o cliente que implementa o protocolo STUN e permite que você envie requisições de binding para servidores STUN.
O componente permite que você use UDP e TCP como transporte. Ao usar UDP como transporte, ele implementa um mecanismo de Retransmissão para reenviar requisições se a resposta não tiver chegado após um curto período.
Normalmente os servidores STUN rodam na porta UDP 3478 e não requerem autenticação, portanto, para enviar uma requisição de binding STUN, preencha as propriedades do servidor para que o cliente saiba onde conectar e trate os eventos em que o componente receberá a resposta do servidor.
Configure o servidor
Chame o método SendRequest, para enviar uma requisição de binding ao servidor STUN.
Trate os eventos
Se o servidor retornar uma resposta bem-sucedida, o evento OnSTUNResponseSuccess será chamado e você pode acessar as informações de binding lendo o 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;