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.

TsgcSTUNClient

STUN-client — Binding requests, extractie van XOR-MAPPED-ADDRESS, ondersteuning voor MESSAGE-INTEGRITY / FINGERPRINT en retransmissietimer conform RFC 8489.

Componentklasse

TsgcSTUNClient

Protocol

STUN (RFC 8489)

Platforms

Windows, macOS, Linux, iOS, Android

Editie

Standard / Professional / Enterprise

Plaats de component en vraag het reflexive adres op

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();

Wat zit erin

Een typed RFC 8489 STUN-client met de message-integrity- en fingerprint-extensies die door ICE worden gebruikt.

Binding request / response

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.

Auth (long-term / short-term)

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.

Retransmissie

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.

IPv4 / IPv6

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.

Gebruik als ICE host gatherer

Stuur meerdere TsgcSTUNClient-instanties aan tegen meerdere STUN-servers om server-reflexive ICE-kandidaten te verzamelen — één per lokale interface.

Onderliggende socket

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.

Specificaties & referenties

Gezaghebbende bronnen voor het protocol dat deze component implementeert.

Documentatie & demo's

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.
Demoproject — Demos\35.P2P\02.STUN Kant-en-klaar voorbeeldproject. Wordt meegeleverd in de sgcWebSockets-package — download hieronder de proefversie.
Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi & C++ Builder en primaire bronverwijzingen — alleen voor deze component.
Gebruikershandleiding (PDF) Uitgebreide handleiding die elke component in de bibliotheek behandelt.
De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

Klaar om NAT-mappings te ontdekken?

Download de gratis proefversie en voeg STUN-gebaseerde NAT-detectie toe aan je Delphi-applicaties.