Client ICE per Delphi

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

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 ProcessCandidates per eseguire i controlli e nominare una coppia funzionante.

uses
  sgcP2P, sgcP2P_ICE_Classes;

// TFormICE contiene FClient: TsgcICEClient e FLog: TStringList

procedure TFormICE.Gather;
begin
  FClient := TsgcICEClient.Create(nil);
  FClient.ICEServers.AddURL('stun:stun.l.google.com:19302');
  FClient.ICEServers.AddURL('turn:turn.example.com', 'alice', 'secret');

  FClient.OnICECandidate := OnICECandidate;
  FClient.OnICECandidatePairNominated := OnICECandidatePairNominated;

  FClient.GatherCandidates;
end;

procedure TFormICE.OnICECandidate(Sender: TObject;
  const aCandidate: TsgcICE_Candidate);
begin
  // AsString è la riga del candidato, pronta per il tuo canale di signalling
  SignalToPeer(aCandidate.AsString);
end;

// i candidati remoti arrivano sul tuo canale di signalling
procedure TFormICE.AddRemoteCandidate(const aCandidate: string);
begin
  FClient.AddRTCIceCandidate(aCandidate);
  FClient.ProcessCandidates;
end;

procedure TFormICE.OnICECandidatePairNominated(Sender: TObject;
  const aCandidatePair: TsgcICE_CandidatePair);
begin
  FLog.Add('nominated: ' + aCandidatePair.Local.Address + ' -> ' +
    aCandidatePair.Remote.Address);
end;
// includes: sgcP2P.hpp, sgcP2P_ICE_Classes.hpp
TsgcICEClient *Client = new TsgcICEClient(this);
Client->ICEServers->AddURL("stun:stun.l.google.com:19302");
Client->OnICECandidate = OnICECandidate;
Client->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 OnICECandidatePairNominated con la coppia vincente, e aCandidatePair.Local / Remote ti dicono quali due indirizzi ha scelto.

Implementa le sonde di consent-freshness di RFC 7675: una richiesta Binding sulla coppia nominata ogni ConsentInterval millisecondi, e OnICECandidatePairFailed con motivo Consent Freshness Timeout quando passa ConsentTimeout senza risposta.

Agnostico rispetto al signalling

Il componente non assume un canale di signalling specifico. Tu metti aCandidate.AsString sul tuo signalling WebSocket, SIP o HTTP, e passi quello che torna indietro ad AddRTCIceCandidate seguito da ProcessCandidates.

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