STUN-client voor Delphi
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.
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.
STUN-client — Binding requests, extractie van XOR-MAPPED-ADDRESS, ondersteuning voor MESSAGE-INTEGRITY / FINGERPRINT en retransmissietimer conform RFC 8489.
TsgcSTUNClient
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
Stel de host en de poort van de STUN-server in, roep SendRequest aan en lees vervolgens aBinding.RemoteIP en aBinding.RemotePort in OnSTUNResponseSuccess.
uses
sgcP2P, sgcP2P_STUN_Classes, sgcSocket_Classes;
// TFormSTUN bevat FClient: TsgcSTUNClient en 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 en RemotePort bevatten het XOR-MAPPED-ADDRESS dat de server zag
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();
Een typed RFC 8489 STUN-client met de message-integrity- en fingerprint-extensies die door ICE worden gebruikt.
SendRequest verstuurt het STUN-Binding-bericht 0x0001 naar Host / Port, en SendBindingRequest(host, port) bevraagt een andere server via dezelfde socket. Het antwoord verschijnt in OnSTUNResponseSuccess met het XOR-MAPPED-ADDRESS al geparseerd.
Zet STUNOptions.Authentication.Credentials op stauShortTermCredential of stauLongTermCredential, vul Username en Password in, en de component berekent MESSAGE-INTEGRITY. Het realm en de nonce komen uit de 401 challenge.
STUN over UDP vereist retransmissie op applicatieniveau. RetransmissionOptions.RTO en MaxRetries sturen de back-off uit RFC 8489 §6.2.1 aan, en Enabled schakelt die uit wanneer je de timing zelf regelt.
XOR-MAPPED-ADDRESS kan in beide families terugkomen. De component decodeert beide en geeft je de tekstvorm in aBinding.RemoteIP, met de familie in aBinding.IPVersion.
Stuur meerdere TsgcSTUNClient-instanties aan tegen meerdere STUN-servers om server-reflexive ICE-kandidaten te verzamelen — één per lokale interface.
Gebruikt intern TsgcUDPClient, en Transport := stunTCP schakelt over naar het TCP-pad. GetLocalSocketBinding geeft het transportadres van die socket terug, en dat is de RFC 8445 base die elke via die socket verzamelde candidate deelt.
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. | Openen | |
| Demoproject — Demos\35.P2P\02.STUN Kant-en-klaar voorbeeldproject. Wordt meegeleverd in de sgcWebSockets-package — download hieronder de proefversie. | Openen | |
| Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi & C++ Builder en primaire bronverwijzingen — alleen voor deze component. | Openen | |
| Gebruikershandleiding (PDF) Uitgebreide handleiding die elke component in de bibliotheek behandelt. | Openen |