Client ICE

Esegui l'intero algoritmo ICE in Delphi/C++Builder — raccogli candidati host, server-reflexive e relay, esegui verifiche di connettività STUN, esegui la nomination della coppia migliore secondo RFC 8445.

TsgcICEClient

Implementa la macchina a stati ICE di RFC 8445 — raccolta dei candidati, prioritizzazione, generazione delle coppie, verifiche di connettività (BindingRequest con USE-CANDIDATE), nomination e consent freshness.

Classe componente

TsgcICEClient

Protocollo

ICE (RFC 8445)

Piattaforme

Windows, macOS, Linux, iOS, Android

Edizione

Professional / Enterprise

Configura i server, raccogli, scambia, verifica

Configura i server ICE STUN/TURN, chiama GatherCandidates, scambia la lista dei candidati con il peer (fuori banda), poi StartChecks per eseguire la nomination di una coppia funzionante.

uses
  sgcP2P;

var
  ICE: TsgcICEClient;
begin
  ICE := TsgcICEClient.Create(nil);
  ICE.IceServers.Add('stun:stun.l.google.com:19302');
  ICE.IceServers.Add('turn:turn.example.com', 'alice', 'secret');

  ICE.OnICELocalCandidate := procedure(Sender: TObject;
    const aCandidate: string)
  begin
    SignalToPeer(aCandidate); // out-of-band SDP / WebSocket
  end;

  ICE.OnICEConnectionStateChanged := procedure(Sender: TObject;
    const aState: TsgcICEConnectionState)
  begin
    Memo1.Lines.Add('ICE: ' + GetEnumName(TypeInfo(TsgcICEConnectionState), Ord(aState)));
  end;

  ICE.GatherCandidates;
end;
// uses: sgcP2P
TsgcICEClient *ICE = new TsgcICEClient(this);
ICE->IceServers->Add("stun:stun.l.google.com:19302");
ICE->GatherCandidates();

Cosa c'è all'interno

Un engine ICE riutilizzabile che si inserisce sotto TsgcRTCPeerConnection — oppure funziona da solo per P2P non-WebRTC.

Raccolta dei candidati

Enumera i candidati host da ogni interfaccia locale, i candidati server-reflexive da ogni server STUN, i candidati relayed da ogni server TURN — tutto in parallelo.

Generazione e prioritizzazione delle coppie

Calcola le priorità delle coppie di candidati secondo RFC 8445 §6.1.2 e ordina la check list. Le coppie congelate si sbloccano man mano che il loro foundation progredisce.

Verifiche di connettività

Invia STUN BindingRequests con attributi PRIORITY, ICE-CONTROLLING / ICE-CONTROLLED, USE-CANDIDATE secondo lo standard. Le verifiche triggered si attivano su stimolo in ingresso.

Nomination

Quando una coppia ha successo e l'agent controlling segnala USE-CANDIDATE, il componente emette OnICEConnectionStateChanged con iceConnected, poi iceCompleted sulla coppia finale selezionata.

Implementa le sonde di consent-freshness di RFC 7675 — STUN BindingRequests periodici sulla coppia nominata, con OnICEConnectionStateChanged(iceFailed) quando il consenso è perso.

Agnostico rispetto al signalling

Il componente non assume un canale di signalling specifico — tu trasporti i candidati locali sul tuo signalling WebSocket / SIP / HTTP e gli riconsegni quelli remoti.

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 — TsgcICEClient Riferimento completo di proprietà, metodi ed eventi di questo componente.
Progetto demo — Demos\35.P2P\04.ICE 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.

Pronto a eseguire ICE in Delphi?

Scarica la versione di prova gratuita e aggiungi la raccolta completa di candidati ICE e le verifiche di connettività alle tue applicazioni Delphi.