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.
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.
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.
TsgcICEClient
Windows, macOS, Linux, iOS, Android
Enterprise
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();
Un moteur ICE réutilisable qui se place sous TsgcRTCPeerConnection — ou fonctionne seul pour du P2P hors WebRTC.
É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.
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.
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.
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.
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.
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.
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. | Ouvrir | |
| 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. | Ouvrir | |
| Document technique (PDF) Fonctionnalités, démarrage rapide, exemples de code Delphi et C++ Builder et références primaires — ce composant uniquement. | Ouvrir | |
| Manuel utilisateur (PDF) Manuel complet couvrant tous les composants de la bibliothèque. | Ouvrir |