Client STUN pour Delphi

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 et le port du serveur STUN, appelle SendRequest, puis lis aBinding.RemoteIP et aBinding.RemotePort dans OnSTUNResponseSuccess.

uses
  sgcP2P, sgcP2P_STUN_Classes, sgcSocket_Classes;

// TFormSTUN contient FClient: TsgcSTUNClient et FLog: TStringList

procedure TFormSTUN.Discover;
begin
  FClient := TsgcSTUNClient.Create(nil);
  FClient.Host := 'stun.l.google.com';
  FClient.Port := 19302;

  FClient.OnSTUNResponseSuccess := OnSTUNResponseSuccess;

  FClient.SendRequest;
end;

procedure TFormSTUN.OnSTUNResponseSuccess(Sender: TObject;
  const aSocket: TsgcSocketConnection;
  const aMessage: TsgcSTUN_Message;
  const aBinding: TsgcSTUN_ResponseBinding);
begin
  // RemoteIP et RemotePort portent l'XOR-MAPPED-ADDRESS vue par le serveur
  FLog.Add('public: ' + aBinding.RemoteIP + ':' +
    IntToStr(aBinding.RemotePort));
end;
// includes: sgcP2P.hpp, sgcP2P_STUN_Classes.hpp
TsgcSTUNClient *Client = new TsgcSTUNClient(this);
Client->Host = "stun.l.google.com";
Client->Port = 19302;
Client->OnSTUNResponseSuccess = OnSTUNResponseSuccess;
Client->SendRequest();

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

SendRequest envoie le message STUN Binding 0x0001 vers Host / Port, et SendBindingRequest(host, port) interroge un autre serveur par le même socket. La réponse arrive sur OnSTUNResponseSuccess avec XOR-MAPPED-ADDRESS déjà analysé.

Authentification (longue / courte durée)

Configure STUNOptions.Authentication.Credentials sur stauShortTermCredential ou stauLongTermCredential, renseigne Username et Password, et le composant calcule MESSAGE-INTEGRITY. Le realm et le nonce proviennent du défi 401.

Retransmission

STUN sur UDP exige une retransmission au niveau applicatif. RetransmissionOptions.RTO et MaxRetries pilotent le back-off de la RFC 8489 §6.2.1, et Enabled le désactive quand tu gères toi-même le rythme.

IPv4 / IPv6

XOR-MAPPED-ADDRESS revient dans l'une ou l'autre famille. Le composant décode les deux et te remet la forme texte dans aBinding.RemoteIP, avec la famille dans aBinding.IPVersion.

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, et Transport := stunTCP bascule sur le chemin TCP. GetLocalSocketBinding renvoie l'adresse de transport de ce socket, qui est la base RFC 8445 partagée par tous les candidats collectés à travers lui.

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.
Meilleur rapport qualité-prix : All-AccessTous les produits eSeGeCe, Support Premium inclus, à partir de €1,059/an.
Voir les tarifs All-Access

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.