STUN-Client

Ermittle deinen reflexiven Endpunkt hinter NAT mit einem typisierten STUN-Client (RFC 8489). Wird als Bootstrap-Schritt für die ICE-Kandidatensammlung und WebRTC verwendet.

TsgcSTUNClient

STUN-Client — Binding-Requests, XOR-MAPPED-ADDRESS-Extraktion, MESSAGE-INTEGRITY-/FINGERPRINT-Unterstützung, Retransmission-Timer gemäß RFC 8489.

Komponentenklasse

TsgcSTUNClient

Protokoll

STUN (RFC 8489)

Plattformen

Windows, macOS, Linux, iOS, Android

Edition

Standard / Professional / Enterprise

Komponente platzieren, reflexive Adresse anfordern

Setze Host/Port des STUN-Servers, rufe SendBindingRequest auf und lies anschließend MappedAddress / MappedPort aus 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();

Was steckt drin

Ein typisierter RFC-8489-STUN-Client mit den von ICE genutzten Message-Integrity- und Fingerprint-Erweiterungen.

Binding-Request / -Response

SendBindingRequest sendet die STUN-Nachricht 0x0001; die Antwort erscheint in OnSTUNMappedAddress mit dem geparsten XOR-MAPPED-ADDRESS-Attribut.

Authentifizierung (long-term / short-term)

Setze Authentication.UserName / Password, dann berechnet die Komponente MESSAGE-INTEGRITY (HMAC-SHA1 / HMAC-SHA256). Realm und Nonce werden aus der 401-Challenge-Antwort extrahiert.

Retransmission

STUN über UDP erfordert eine Retransmission auf Anwendungsebene. Die Komponente implementiert das Standard-Back-off (RTO / Rc / Rm) gemäß RFC 8489 §6.2.1.

IPv4 / IPv6

XOR-MAPPED-ADDRESS kommt in beiden Familien zurück — die Komponente dekodiert beide und speichert die kanonische Textform in MappedAddress.

Einsatz als ICE-Host-Gatherer

Betreibe mehrere TsgcSTUNClient-Instanzen gegen verschiedene STUN-Server, um server-reflexive ICE-Kandidaten zu sammeln — einen pro lokalem Interface.

Zugrundeliegender Socket

Verwendet intern TsgcUDPClient; das lokale Port-Binding ist konfigurierbar, sodass STUN, ICE und der Datenpfad bei Bedarf einen Endpunkt teilen können.

Spezifikationen & Referenzen

Maßgebliche Quellen für das Protokoll, das diese Komponente implementiert.

Dokumentation & Demos

Springe direkt zur Komponentenreferenz, hole dir das sofort lauffähige Demo-Projekt und lade die Testversion herunter.

Online-Hilfe — TsgcSTUNClient Vollständige Referenz zu Eigenschaften, Methoden und Ereignissen dieser Komponente.
Demo-Projekt — Demos\35.P2P\02.STUN Sofort lauffähiges Beispielprojekt. Wird im sgcWebSockets-Paket mitgeliefert — lade unten die Testversion herunter.
Technisches Dokument (PDF) Funktionen, Schnellstart, Code-Beispiele für Delphi & C++ Builder und Primärquellen-Referenzen — nur diese Komponente.
Benutzerhandbuch (PDF) Umfassendes Handbuch, das jede Komponente der Bibliothek abdeckt.

Bereit, NAT-Zuordnungen zu ermitteln?

Lade die kostenlose Testversion herunter und ergänze deine Delphi-Anwendungen um STUN-basierte NAT-Erkennung.