Client STUN

Découvre ton point de terminaison réflexif derrière un NAT avec un client STUN (RFC 8489) typé. Utilisé comme étape d'amorçage pour la collecte de candidats ICE et WebRTC.

TsgcSTUNClient

Client STUN — requêtes Binding, extraction de XOR-MAPPED-ADDRESS, prise en charge de MESSAGE-INTEGRITY / FINGERPRINT, minuteur de retransmission selon la RFC 8489.

Classe du composant

TsgcSTUNClient

Protocole

STUN (RFC 8489)

Plateformes

Windows, macOS, Linux, iOS, Android

Édition

Standard / Professional / Enterprise

Pose le composant, demande l'adresse réflexive

Configure l'hôte/port du serveur STUN, appelle SendBindingRequest, puis lis MappedAddress / MappedPort dans 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();

Sous le capot

Un client STUN typé conforme à la RFC 8489, avec les extensions message-integrity et fingerprint utilisées par ICE.

Requête / réponse Binding

SendBindingRequest envoie le message STUN 0x0001 ; la réponse remonte dans OnSTUNMappedAddress avec l'attribut XOR-MAPPED-ADDRESS analysé.

Authentification (longue / courte durée)

Configure Authentication.UserName / Password et le composant calcule MESSAGE-INTEGRITY (HMAC-SHA1 / HMAC-SHA256). Le realm et le nonce sont extraits de la réponse de défi 401.

Retransmission

STUN sur UDP exige une retransmission au niveau applicatif. Le composant implémente le back-off standard (RTO / Rc / Rm) selon la RFC 8489 §6.2.1.

IPv4 / IPv6

XOR-MAPPED-ADDRESS revient dans l'une ou l'autre famille — le composant décode les deux et stocke la forme texte canonique dans MappedAddress.

Utilisation comme collecteur d'hôtes ICE

Pilote plusieurs instances de TsgcSTUNClient contre différents serveurs STUN pour collecter des candidats ICE server-reflexive — un par interface locale.

Socket sous-jacent

Utilise TsgcUDPClient en interne ; la liaison du port local est configurable, pour que STUN, ICE et le chemin de données puissent partager un point de terminaison si nécessaire.

Spécifications et références

Sources de référence pour le protocole implémenté par ce composant.

Documentation et démos

Lien direct vers la référence du composant, projet de démo prêt à l'emploi et téléchargement de l'essai.

Aide en ligne — TsgcSTUNClient Référence complète des propriétés, méthodes et événements de ce composant.
Projet de démo — Demos\35.P2P\02.STUN Projet d'exemple prêt à l'emploi. Livré dans le package sgcWebSockets — télécharge l'essai ci-dessous.
Document technique (PDF) Fonctionnalités, démarrage rapide, exemples de code Delphi et C++ Builder et références primaires — ce composant uniquement.
Manuel utilisateur (PDF) Manuel complet couvrant tous les composants de la bibliothèque.

Prêt à découvrir les mappages NAT ?

Télécharge l'essai gratuit et ajoute la découverte NAT basée sur STUN à tes applications Delphi.