STUN-client

Ontdek je reflexive endpoint achter NAT met een typed STUN-client (RFC 8489). Wordt gebruikt als bootstrap-stap voor het verzamelen van ICE-kandidaten en voor WebRTC.

TsgcSTUNClient

STUN-client — Binding requests, extractie van XOR-MAPPED-ADDRESS, ondersteuning voor MESSAGE-INTEGRITY / FINGERPRINT en retransmissietimer conform RFC 8489.

Componentklasse

TsgcSTUNClient

Protocol

STUN (RFC 8489)

Platforms

Windows, macOS, Linux, iOS, Android

Editie

Standard / Professional / Enterprise

Plaats de component en vraag het reflexive adres op

Stel de STUN-server-host/poort in, roep SendBindingRequest aan en lees vervolgens MappedAddress / MappedPort uit 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();

Wat zit erin

Een typed RFC 8489 STUN-client met de message-integrity- en fingerprint-extensies die door ICE worden gebruikt.

Binding request / response

SendBindingRequest verstuurt het STUN-0x0001-bericht; het antwoord verschijnt in OnSTUNMappedAddress met het geparste XOR-MAPPED-ADDRESS-attribuut.

Auth (long-term / short-term)

Stel Authentication.UserName / Password in en de component berekent MESSAGE-INTEGRITY (HMAC-SHA1 / HMAC-SHA256). Realm en nonce worden geëxtraheerd uit het 401 challenge-antwoord.

Retransmissie

STUN over UDP vereist retransmissie op applicatieniveau. De component implementeert de standaard back-off (RTO / Rc / Rm) volgens RFC 8489 §6.2.1.

IPv4 / IPv6

XOR-MAPPED-ADDRESS kan in beide families terugkomen — de component decodeert beide en slaat de canonieke tekstvorm op in MappedAddress.

Gebruik als ICE host gatherer

Stuur meerdere TsgcSTUNClient-instanties aan tegen meerdere STUN-servers om server-reflexive ICE-kandidaten te verzamelen — één per lokale interface.

Onderliggende socket

Gebruikt intern TsgcUDPClient; de lokale-poort-binding is configureerbaar zodat STUN, ICE en het datapad indien nodig een endpoint kunnen delen.

Specificaties & referenties

Gezaghebbende bronnen voor het protocol dat deze component implementeert.

Documentatie & demo's

Deep-link naar de componentreferentie, pak het kant-en-klare demoproject en download de proefversie.

Online help — TsgcSTUNClient Volledige referentie van eigenschappen, methoden en events voor deze component.
Demoproject — Demos\35.P2P\02.STUN Kant-en-klaar voorbeeldproject. Wordt meegeleverd in de sgcWebSockets-package — download hieronder de proefversie.
Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi & C++ Builder en primaire bronverwijzingen — alleen voor deze component.
Gebruikershandleiding (PDF) Uitgebreide handleiding die elke component in de bibliotheek behandelt.

Klaar om NAT-mappings te ontdekken?

Download de gratis proefversie en voeg STUN-gebaseerde NAT-detectie toe aan je Delphi-applicaties.