ICE-client voor Delphi

Voer het volledige ICE-algoritme uit in Delphi/C++Builder — verzamel host-, server-reflexive- en relay-kandidaten, voer STUN-connectiviteitscontroles uit en nomineer het beste paar volgens RFC 8445.

TsgcICEClient

Implementeert de ICE-toestandsmachine uit RFC 8445 — verzamelen van kandidaten, prioritering, paargeneratie, connectiviteitscontroles (BindingRequest met USE-CANDIDATE), nominatie en consent freshness.

Componentklasse

TsgcICEClient

Protocol

ICE (RFC 8445)

Platforms

Windows, macOS, Linux, iOS, Android

Editie

Enterprise

Configureer servers, verzamel, wissel uit en controleer

Configureer STUN-/TURN-ICE-servers, roep GatherCandidates aan, wissel de kandidatenlijst uit met de peer (out-of-band) en roep dan ProcessCandidates aan om de checks uit te voeren en een werkend paar te nomineren.

uses
  sgcP2P, sgcP2P_ICE_Classes;

// TFormICE bevat FClient: TsgcICEClient en 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 is de candidate-regel, klaar voor je signalling-kanaal
  SignalToPeer(aCandidate.AsString);
end;

// remote candidates komen binnen via je signalling-kanaal
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();

Wat zit erin

Een herbruikbare ICE-engine die onder TsgcRTCPeerConnection past — of op zichzelf draait voor niet-WebRTC P2P.

Verzamelen van kandidaten

Somt host-kandidaten op vanaf elke lokale interface, server-reflexive-kandidaten vanaf elke STUN-server en relay-kandidaten vanaf elke TURN-server — allemaal parallel.

Paargeneratie & prioritering

Berekent de prioriteiten van kandidaatparen volgens RFC 8445 §6.1.2 en ordent de check-lijst. Frozen pairs ontdooien zodra hun foundation vooruitgang boekt.

Connectiviteitscontroles

Verstuurt STUN-BindingRequests met PRIORITY-, ICE-CONTROLLING- / ICE-CONTROLLED- en USE-CANDIDATE-attributen volgens de standaard. Triggered checks worden gestart bij inkomende stimulus.

Nominatie

Wanneer een paar slaagt en de controlling agent USE-CANDIDATE markeert, vuurt de component OnICECandidatePairNominated af met het paar dat gewonnen heeft, en aCandidatePair.Local / Remote vertellen je welke twee adressen zijn gekozen.

Implementeert de consent-freshness-probes uit RFC 7675: een Binding-request op het genomineerde paar om de ConsentInterval milliseconden, en OnICECandidatePairFailed met de reden Consent Freshness Timeout zodra ConsentTimeout verstrijkt zonder antwoord.

Signalling-agnostisch

De component gaat niet uit van een specifiek signalling-kanaal. Je zet aCandidate.AsString op je eigen WebSocket-, SIP- of HTTP-signalling en voert wat er terugkomt door aan AddRTCIceCandidate, gevolgd door ProcessCandidates.

Specificaties & referenties

Gezaghebbende bronnen voor het protocol dat deze component implementeert.

Documentatie & demo's

Deep-link naar de componentreferentie, pak het kant-en-klare demoproject en download de proefversie.

Online help — TsgcICEClient Volledige referentie van eigenschappen, methoden en events voor deze component.
Demoproject — Demos\35.P2P\04.ICE Kant-en-klaar voorbeeldproject. Wordt meegeleverd in de sgcWebSockets-package — download hieronder de proefversie.
Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi & C++ Builder en primaire bronverwijzingen — alleen voor deze component.
Gebruikershandleiding (PDF) Uitgebreide handleiding die elke component in de bibliotheek behandelt.
De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

Klaar om ICE in Delphi te draaien?

Download de gratis proefversie en voeg volledige ICE-kandidaatverzameling en connectiviteitscontroles toe aan je Delphi-applicaties.