Cliente STUN para Delphi
Descubra seu endpoint reflexivo atrás do NAT com um cliente STUN tipado (RFC 8489). Usado como etapa inicial para coleta de candidatos ICE e WebRTC.
Descubra seu endpoint reflexivo atrás do NAT com um cliente STUN tipado (RFC 8489). Usado como etapa inicial para coleta de candidatos ICE e WebRTC.
Cliente STUN — Binding requests, extração de XOR-MAPPED-ADDRESS, suporte a MESSAGE-INTEGRITY / FINGERPRINT, timer de retransmissão conforme RFC 8489.
TsgcSTUNClient
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
Defina o host e a porta do servidor STUN, chame SendRequest e depois leia aBinding.RemoteIP e aBinding.RemotePort em OnSTUNResponseSuccess.
uses
sgcP2P, sgcP2P_STUN_Classes, sgcSocket_Classes;
// TFormSTUN mantém FClient: TsgcSTUNClient e FLog: TStringList
procedure TFormSTUN.Discover;
begin
FClient := TsgcSTUNClient.Create(nil);
FClient.Host := 'stun.l.google.com';
FClient.Port := 19302;
FClient.OnSTUNResponseSuccess := OnSTUNResponseSuccess;
FClient.SendRequest;
end;
procedure TFormSTUN.OnSTUNResponseSuccess(Sender: TObject;
const aSocket: TsgcSocketConnection;
const aMessage: TsgcSTUN_Message;
const aBinding: TsgcSTUN_ResponseBinding);
begin
// RemoteIP e RemotePort trazem o XOR-MAPPED-ADDRESS que o servidor viu
FLog.Add('public: ' + aBinding.RemoteIP + ':' +
IntToStr(aBinding.RemotePort));
end;
// includes: sgcP2P.hpp, sgcP2P_STUN_Classes.hpp
TsgcSTUNClient *Client = new TsgcSTUNClient(this);
Client->Host = "stun.l.google.com";
Client->Port = 19302;
Client->OnSTUNResponseSuccess = OnSTUNResponseSuccess;
Client->SendRequest();
Um cliente STUN tipado (RFC 8489) com as extensões message-integrity e fingerprint utilizadas pelo ICE.
SendRequest envia a mensagem Binding STUN 0x0001 para Host / Port, e SendBindingRequest(host, port) consulta outro servidor pelo mesmo socket. A resposta chega em OnSTUNResponseSuccess com o XOR-MAPPED-ADDRESS já parseado.
Defina STUNOptions.Authentication.Credentials como stauShortTermCredential ou stauLongTermCredential, preencha Username e Password, e o componente calcula o MESSAGE-INTEGRITY. O realm e o nonce vêm da resposta de challenge 401.
STUN sobre UDP exige retransmissão na camada de aplicação. RetransmissionOptions.RTO e MaxRetries comandam o back-off da RFC 8489 §6.2.1, e Enabled o desliga quando você mesmo controla os tempos.
O XOR-MAPPED-ADDRESS retorna em qualquer família. O componente decodifica ambas e entrega a você a forma textual em aBinding.RemoteIP, com a família em aBinding.IPVersion.
Use múltiplas instâncias de TsgcSTUNClient contra vários servidores STUN para coletar candidatos ICE server-reflexive — um por interface local.
Usa TsgcUDPClient internamente, e Transport := stunTCP alterna para o caminho TCP. GetLocalSocketBinding retorna o endereço de transporte desse socket, que é a base da RFC 8445 compartilhada por todo candidato coletado através dele.
Acesse a referência do componente, obtenha o projeto de demo pronto para executar e baixe o trial.
| Ajuda Online — TsgcSTUNClient Referência completa de propriedades, métodos e eventos deste componente. | Open | |
| Projeto de Demo — Demos\35.P2P\02.STUN Projeto de exemplo pronto para executar. Incluído no pacote sgcWebSockets — baixe o trial abaixo. | Open | |
| Documento Técnico (PDF) Recursos, quick start, exemplos de código para Delphi & C++ Builder e referências primárias — somente este componente. | Open | |
| Manual do Usuário (PDF) Manual abrangente cobrindo todos os componentes da biblioteca. | Open |