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.
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.
Client STUN — requêtes Binding, extraction de XOR-MAPPED-ADDRESS, prise en charge de MESSAGE-INTEGRITY / FINGERPRINT, minuteur de retransmission selon la RFC 8489.
TsgcSTUNClient
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
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();
Un client STUN typé conforme à la RFC 8489, avec les extensions message-integrity et fingerprint utilisées par ICE.
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é.
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.
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.
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.
Pilote plusieurs instances de TsgcSTUNClient contre différents serveurs STUN pour collecter des candidats ICE server-reflexive — un par interface locale.
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.
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. | Ouvrir | |
| 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. | Ouvrir | |
| Document technique (PDF) Fonctionnalités, démarrage rapide, exemples de code Delphi et C++ Builder et références primaires — ce composant uniquement. | Ouvrir | |
| Manuel utilisateur (PDF) Manuel complet couvrant tous les composants de la bibliothèque. | Ouvrir |