Client STUN per Delphi

Scopri il tuo endpoint reflexive dietro NAT con un client STUN tipizzato (RFC 8489). Usato come passo iniziale per la raccolta dei candidati ICE e WebRTC.

TsgcSTUNClient

Client STUN — richieste Binding, estrazione di XOR-MAPPED-ADDRESS, supporto MESSAGE-INTEGRITY / FINGERPRINT, timer di ritrasmissione secondo RFC 8489.

Classe componente

TsgcSTUNClient

Protocollo

STUN (RFC 8489)

Piattaforme

Windows, macOS, Linux, iOS, Android

Edizione

Standard / Professional / Enterprise

Trascina il componente, chiedi l'indirizzo reflexive

Imposta host e porta del server STUN, chiama SendRequest, poi leggi aBinding.RemoteIP e aBinding.RemotePort in OnSTUNResponseSuccess.

uses
  sgcP2P, sgcP2P_STUN_Classes, sgcSocket_Classes;

// TFormSTUN contiene FClient: TsgcSTUNClient e 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 e RemotePort contengono lo XOR-MAPPED-ADDRESS visto dal server
  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();

Cosa c'è all'interno

Un client STUN tipizzato RFC 8489 con le estensioni message-integrity e fingerprint usate da ICE.

Richiesta / risposta Binding

SendRequest invia il messaggio STUN Binding 0x0001 a Host / Port, e SendBindingRequest(host, port) interroga un altro server attraverso lo stesso socket. La risposta arriva su OnSTUNResponseSuccess con XOR-MAPPED-ADDRESS già decodificato.

Auth (long-term / short-term)

Imposta STUNOptions.Authentication.Credentials a stauShortTermCredential o stauLongTermCredential, compila Username e Password, e il componente calcola MESSAGE-INTEGRITY. Realm e nonce arrivano dalla risposta di challenge 401.

Ritrasmissione

STUN su UDP richiede ritrasmissione a livello applicativo. RetransmissionOptions.RTO e MaxRetries guidano il back-off di RFC 8489 §6.2.1, e Enabled lo disattiva quando la temporizzazione la gestisci tu.

IPv4 / IPv6

XOR-MAPPED-ADDRESS torna in entrambe le famiglie. Il componente le decodifica entrambe e ti consegna la forma testuale in aBinding.RemoteIP, con la famiglia in aBinding.IPVersion.

Uso come raccoglitore di host ICE

Esegui più istanze di TsgcSTUNClient contro diversi server STUN per raccogliere candidati ICE server-reflexive — uno per interfaccia locale.

Socket sottostante

Usa TsgcUDPClient internamente, e Transport := stunTCP passa al percorso TCP. GetLocalSocketBinding restituisce l'indirizzo di trasporto di quel socket, che è la base RFC 8445 condivisa da ogni candidato raccolto attraverso di esso.

Specifiche e riferimenti

Fonti autorevoli per il protocollo implementato da questo componente.

Documentazione e demo

Collegamenti diretti al riferimento del componente, al progetto demo pronto all'uso e al download della versione di prova.

Guida online — TsgcSTUNClient Riferimento completo di proprietà, metodi ed eventi di questo componente.
Progetto demo — Demos\35.P2P\02.STUN Progetto di esempio pronto all'uso. Incluso nel pacchetto sgcWebSockets — scarica la versione di prova qui sotto.
Documento tecnico (PDF) Funzionalità, guida rapida, esempi di codice per Delphi e C++ Builder e riferimenti alle fonti primarie — solo per questo componente.
Manuale utente (PDF) Manuale completo che copre ogni componente della libreria.
La scelta più conveniente: All-AccessTutti i prodotti eSeGeCe, con Supporto Premium incluso, a partire da €1,059/anno.
Vedi i prezzi All-Access

Pronto a scoprire i mapping NAT?

Scarica la versione di prova gratuita e aggiungi il rilevamento NAT basato su STUN alle tue applicazioni Delphi.