Client STUN

Scopri il tuo endpoint reflexive dietro NAT con un client STUN tipizzato (RFC 8489). Usato come passo iniziale per la raccolta dei candidati ICE e WebRTC.

TsgcSTUNClient

Client STUN — richieste Binding, estrazione di XOR-MAPPED-ADDRESS, supporto MESSAGE-INTEGRITY / FINGERPRINT, timer di ritrasmissione secondo RFC 8489.

Classe componente

TsgcSTUNClient

Protocollo

STUN (RFC 8489)

Piattaforme

Windows, macOS, Linux, iOS, Android

Edizione

Standard / Professional / Enterprise

Trascina il componente, chiedi l'indirizzo reflexive

Imposta host/porta del server STUN, chiama SendBindingRequest, poi leggi MappedAddress / MappedPort da 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();

Cosa c'è all'interno

Un client STUN tipizzato RFC 8489 con le estensioni message-integrity e fingerprint usate da ICE.

Richiesta / risposta Binding

SendBindingRequest invia il messaggio STUN 0x0001; la risposta affiora in OnSTUNMappedAddress con l'attributo XOR-MAPPED-ADDRESS già decodificato.

Auth (long-term / short-term)

Imposta Authentication.UserName / Password e il componente calcola MESSAGE-INTEGRITY (HMAC-SHA1 / HMAC-SHA256). Realm e nonce sono estratti dalla risposta di challenge 401.

Ritrasmissione

STUN su UDP richiede ritrasmissione a livello applicativo. Il componente implementa il back-off standard (RTO / Rc / Rm) secondo RFC 8489 §6.2.1.

IPv4 / IPv6

XOR-MAPPED-ADDRESS torna in entrambe le famiglie — il componente decodifica entrambe e memorizza la forma testuale canonica in MappedAddress.

Uso come raccoglitore di host ICE

Esegui più istanze di TsgcSTUNClient contro diversi server STUN per raccogliere candidati ICE server-reflexive — uno per interfaccia locale.

Socket sottostante

Usa TsgcUDPClient internamente; il binding della porta locale è configurabile in modo che STUN, ICE e il percorso dati possano condividere un endpoint quando necessario.

Specifiche e riferimenti

Fonti autorevoli per il protocollo implementato da questo componente.

Documentazione e demo

Collegamenti diretti al riferimento del componente, al progetto demo pronto all'uso e al download della versione di prova.

Guida online — TsgcSTUNClient Riferimento completo di proprietà, metodi ed eventi di questo componente.
Progetto demo — Demos\35.P2P\02.STUN Progetto di esempio pronto all'uso. Incluso nel pacchetto sgcWebSockets — scarica la versione di prova qui sotto.
Documento tecnico (PDF) Funzionalità, guida rapida, esempi di codice per Delphi e C++ Builder e riferimenti alle fonti primarie — solo per questo componente.
Manuale utente (PDF) Manuale completo che copre ogni componente della libreria.

Pronto a scoprire i mapping NAT?

Scarica la versione di prova gratuita e aggiungi il rilevamento NAT basato su STUN alle tue applicazioni Delphi.