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.
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.
Client STUN — richieste Binding, estrazione di XOR-MAPPED-ADDRESS, supporto MESSAGE-INTEGRITY / FINGERPRINT, timer di ritrasmissione secondo RFC 8489.
TsgcSTUNClient
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
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();
Un client STUN tipizzato RFC 8489 con le estensioni message-integrity e fingerprint usate da ICE.
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.
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.
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.
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.
Esegui più istanze di TsgcSTUNClient contro diversi server STUN per raccogliere candidati ICE server-reflexive — uno per interfaccia locale.
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.
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. | Apri | |
| Progetto demo — Demos\35.P2P\02.STUN Progetto di esempio pronto all'uso. Incluso nel pacchetto sgcWebSockets — scarica la versione di prova qui sotto. | Apri | |
| Documento tecnico (PDF) Funzionalità, guida rapida, esempi di codice per Delphi e C++ Builder e riferimenti alle fonti primarie — solo per questo componente. | Apri | |
| Manuale utente (PDF) Manuale completo che copre ogni componente della libreria. | Apri |