STUN Client

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.

TsgcSTUNClient

Cliente STUN — Binding requests, extração de XOR-MAPPED-ADDRESS, suporte a MESSAGE-INTEGRITY / FINGERPRINT, timer de retransmissão conforme RFC 8489.

Classe do componente

TsgcSTUNClient

Protocolo

STUN (RFC 8489)

Plataformas

Windows, macOS, Linux, iOS, Android

Edição

Standard / Professional / Enterprise

Adicione o componente e solicite o endereço reflexivo

Defina o host/port do servidor STUN, chame SendBindingRequest e leia MappedAddress / MappedPort em OnSTUNMappedAddress.

uses
  sgcP2P;

var
  STUN: TsgcSTUNClient;
begin
  STUN := TsgcSTUNClient.Create(nil);
  STUN.Host := 'stun.l.google.com';
  STUN.Port := 19302;

  STUN.OnSTUNMappedAddress := procedure(Sender: TObject;
    const aMappedAddress, aMappedPort: string)
  begin
    Memo1.Lines.Add('public: ' + aMappedAddress + ':' + aMappedPort);
  end;

  STUN.SendBindingRequest;
end;
// uses: sgcP2P
TsgcSTUNClient *STUN = new TsgcSTUNClient(this);
STUN->Host = "stun.l.google.com";
STUN->Port = 19302;
STUN->SendBindingRequest();

O que está incluído

Um cliente STUN tipado (RFC 8489) com as extensões message-integrity e fingerprint utilizadas pelo ICE.

Binding request / response

SendBindingRequest envia a mensagem STUN 0x0001; a resposta aparece em OnSTUNMappedAddress com o atributo XOR-MAPPED-ADDRESS já parseado.

Autenticação (long-term / short-term)

Defina Authentication.UserName / Password e o componente calcula o MESSAGE-INTEGRITY (HMAC-SHA1 / HMAC-SHA256). O realm e o nonce são extraídos da resposta de challenge 401.

Retransmissão

STUN sobre UDP exige retransmissão na camada de aplicação. O componente implementa o back-off padrão (RTO / Rc / Rm) conforme RFC 8489 §6.2.1.

IPv4 / IPv6

XOR-MAPPED-ADDRESS retorna em qualquer família — o componente decodifica ambas e armazena a forma textual canônica em MappedAddress.

Como coletor ICE

Use múltiplas instâncias de TsgcSTUNClient contra vários servidores STUN para coletar candidatos ICE server-reflexive — um por interface local.

Socket subjacente

Usa TsgcUDPClient internamente; o binding de porta local é configurável para que STUN, ICE e o caminho de dados possam compartilhar um endpoint quando necessário.

Especificações & referências

Fontes oficiais do protocolo implementado por este componente.

Documentação & Demos

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.
Projeto de Demo — Demos\35.P2P\02.STUN Projeto de exemplo pronto para executar. Incluído no pacote sgcWebSockets — baixe o trial abaixo.
Documento Técnico (PDF) Recursos, quick start, exemplos de código para Delphi & C++ Builder e referências primárias — somente este componente.
Manual do Usuário (PDF) Manual abrangente cobrindo todos os componentes da biblioteca.

Pronto para Descobrir Mapeamentos NAT?

Baixe o trial gratuito e adicione descoberta NAT via STUN às suas aplicações Delphi.