Client ICE pour Delphi

Exécute l'algorithme ICE complet en Delphi/C++Builder — collecte des candidats host, server-reflexive et relay, exécute les vérifications de connectivité STUN, nomine la meilleure paire selon la RFC 8445.

TsgcICEClient

Implémente la machine à états ICE de la RFC 8445 — collecte des candidats, priorisation, génération de paires, vérifications de connectivité (BindingRequest avec USE-CANDIDATE), nomination et fraîcheur du consentement.

Classe du composant

TsgcICEClient

Protocole

ICE (RFC 8445)

Plateformes

Windows, macOS, Linux, iOS, Android

Édition

Enterprise

Configure les serveurs, collecte, échange, vérifie

Configure les serveurs ICE STUN/TURN, appelle GatherCandidates, échange la liste de candidats avec le pair (hors bande), puis ProcessCandidates pour lancer les checks et nominer une paire fonctionnelle.

uses
  sgcP2P, sgcP2P_ICE_Classes;

// TFormICE contient FClient: TsgcICEClient et 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 est la ligne de candidat, prête pour ton canal de signalisation
  SignalToPeer(aCandidate.AsString);
end;

// les candidats distants arrivent par ton canal de signalisation
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();

Sous le capot

Un moteur ICE réutilisable qui se place sous TsgcRTCPeerConnection — ou fonctionne seul pour du P2P hors WebRTC.

Collecte des candidats

Énumère les candidats host depuis chaque interface locale, les candidats server-reflexive depuis chaque serveur STUN, les candidats relayed depuis chaque serveur TURN — tous en parallèle.

Génération et priorisation des paires

Calcule les priorités des paires de candidats selon la RFC 8445 §6.1.2 et ordonne la liste de vérification. Les paires gelées dégèlent à mesure que leur fondation progresse.

Vérifications de connectivité

Envoie des STUN BindingRequests avec les attributs PRIORITY, ICE-CONTROLLING / ICE-CONTROLLED, USE-CANDIDATE selon la norme. Les vérifications déclenchées s'activent sur stimulus entrant.

Nomination

Lorsqu'une paire réussit et que l'agent contrôleur marque USE-CANDIDATE, le composant déclenche OnICECandidatePairNominated avec la paire gagnante, et aCandidatePair.Local / Remote t'indiquent les deux adresses retenues.

Fraîcheur du consentement

Implémente les sondes consent-freshness de la RFC 7675 : une requête Binding sur la paire nominée toutes les ConsentInterval millisecondes, et OnICECandidatePairFailed avec le motif Consent Freshness Timeout une fois ConsentTimeout écoulé sans réponse.

Indépendant du signalling

Le composant ne suppose aucun canal de signalisation particulier. Tu places aCandidate.AsString sur ta signalisation WebSocket, SIP ou HTTP, et tu réinjectes ce qui revient dans AddRTCIceCandidate puis ProcessCandidates.

Spécifications et références

Sources de référence pour le protocole implémenté par ce composant.

Documentation et démos

Lien direct vers la référence du composant, projet de démo prêt à l'emploi et téléchargement de l'essai.

Aide en ligne — TsgcICEClient Référence complète des propriétés, méthodes et événements de ce composant.
Projet de démo — Demos\35.P2P\04.ICE Projet d'exemple prêt à l'emploi. Livré dans le package sgcWebSockets — télécharge l'essai ci-dessous.
Document technique (PDF) Fonctionnalités, démarrage rapide, exemples de code Delphi et C++ Builder et références primaires — ce composant uniquement.
Manuel utilisateur (PDF) Manuel complet couvrant tous les composants de la bibliothèque.
Meilleur rapport qualité-prix : All-AccessTous les produits eSeGeCe, Support Premium inclus, à partir de €1,059/an.
Voir les tarifs All-Access

Prêt à exécuter ICE en Delphi ?

Télécharge l'essai gratuit et ajoute la collecte complète de candidats ICE et les vérifications de connectivité à tes applications Delphi.