Server STUN per Delphi

Esegui il tuo server STUN (RFC 8489) in Delphi. Rispondi alle richieste binding con la risposta canonica XOR-MAPPED-ADDRESS — utile in reti private, deployment on-premise e bootstrap ICE.

TsgcSTUNServer

Un server STUN tipizzato RFC 8489 — elabora messaggi Binding / Indication, risponde con XOR-MAPPED-ADDRESS, opzionalmente impone MESSAGE-INTEGRITY per autenticazione long-term.

Classe componente

TsgcSTUNServer

Protocollo

STUN (RFC 8489)

Piattaforme

Windows, macOS, Linux, iOS, Android

Edizione

Professional / Enterprise

Trascina, imposta la porta, hai un endpoint STUN

Imposta Port (default 3478), Active := True — il tuo server ora risponde alle richieste Binding con la risposta canonica XOR-MAPPED-ADDRESS RFC 8489.

uses
  sgcP2P, sgcP2P_STUN_Classes;

// TFormSTUNServer contiene FServer: TsgcSTUNServer e l'handler

procedure TFormSTUNServer.StartServer;
begin
  FServer := TsgcSTUNServer.Create(nil);
  FServer.Port := 3478;

  // opzionale: credenziali long term
  FServer.STUNOptions.Authentication.Enabled := True;
  FServer.STUNOptions.Authentication.LongTermCredentials.Enabled := True;
  FServer.STUNOptions.Authentication.LongTermCredentials.Realm :=
    'example.com';

  FServer.OnSTUNRequestAuthorization := OnSTUNRequestAuthorization;

  FServer.Active := True;
end;

procedure TFormSTUNServer.OnSTUNRequestAuthorization(Sender: TObject;
  const aRequest: TsgcSTUN_Message;
  const aUsername, aRealm: string;
  var Password: string);
begin
  // restituisci la password di quell'utente, vuota rifiuta la richiesta
  Password := LookupPassword(aUsername);
end;
// includes: sgcP2P.hpp, sgcP2P_STUN_Classes.hpp
TsgcSTUNServer *Server = new TsgcSTUNServer(this);
Server->Port = 3478;
Server->STUNOptions->Authentication->Enabled = true;
Server->STUNOptions->Authentication->LongTermCredentials->Enabled = true;
Server->STUNOptions->Authentication->LongTermCredentials->Realm = "example.com";
Server->OnSTUNRequestAuthorization = OnSTUNRequestAuthorization;
Server->Active = true;

Cosa c'è all'interno

Un server STUN self-hosted — ideale per deployment WebRTC on-premise e test in cloud privato.

Handler per richieste Binding

Le richieste Binding in ingresso ricevono risposta con XOR-MAPPED-ADDRESS, MAPPED-ADDRESS (legacy) e FINGERPRINT — conforme alla forma di risposta standard RFC 8489.

Auth long-term / short-term

Attiva STUNOptions.Authentication.Enabled per richiedere MESSAGE-INTEGRITY e imposta il realm su LongTermCredentials.Realm. OnSTUNRequestAuthorization ti espone username e realm, e tu restituisci la password corrispondente.

Attributi di risposta sotto il tuo controllo

STUNOptions.BindingAttributes attiva o disattiva i legacy MAPPED-ADDRESS di RFC 3489, OTHER-ADDRESS, RESPONSE-ORIGIN e SOURCE-ADDRESS, e AlternateServer risponde 300 Try Alternate con il server che indichi.

IPv4 / IPv6

Bind a una famiglia o dual-stack tramite IPVersion. La risposta XOR-MAPPED-ADDRESS usa la famiglia del trasporto in ingresso.

Rotazione dei nonce scaduti

LongTermCredentials.StaleNonce stabilisce per quanto tempo un nonce resta valido. Una volta scaduto il server risponde 438 Stale Nonce con uno nuovo, che è quanto richiede RFC 8489 §9.2.

Diagnostica

OnSTUNRequestSuccess e OnSTUNRequestError ti consegnano la richiesta e la risposta che il server sta per inviare, con un var Accept che puoi azzerare. LogFile scrive su disco lo scambio grezzo.

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 — TsgcSTUNServer 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.

Domande frequenti sul server STUN

Domande comuni sull'esecuzione di un server STUN self-hosted in Delphi e C++ Builder.

Posiziona un componente TsgcSTUNServer, imposta Port (default 3478) e imposta Active := True. Il server risponde quindi alle richieste Binding in ingresso con la risposta canonica XOR-MAPPED-ADDRESS. Facoltativamente abilita Authentication e gestisci OnSTUNRequestAuthorization per richiedere MESSAGE-INTEGRITY con credenziali a lungo termine.
Implementa STUN secondo la RFC 8489, elaborando i messaggi Binding e Indication e rispondendo con XOR-MAPPED-ADDRESS, il legacy MAPPED-ADDRESS e FINGERPRINT. Supporta IPv4 e IPv6, STUN-over-TLS opzionale e fa riferimento alla RFC 5780 per la rilevazione del comportamento NAT.
No. TsgcSTUNServer è un server STUN self-hosted che integri direttamente nella tua applicazione Delphi o C++ Builder, quindi non devi distribuire e gestire un'istanza coturn separata. È ideale per reti private, deployment WebRTC on-premise e bootstrapping ICE sotto il tuo controllo.
Il server STUN fa parte dell'edizione Enterprise di sgcWebSockets e supporta da Delphi 7 fino all'ultima release di Delphi e le versioni corrispondenti di C++ Builder, su Windows, macOS, Linux, iOS e Android. Scarica la trial gratuita per attivare un endpoint STUN nel tuo progetto.
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 eseguire il tuo server STUN?

Scarica la versione di prova gratuita e avvia un endpoint STUN in Delphi.