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.
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.
Implementeert de ICE-toestandsmachine uit RFC 8445 — verzamelen van kandidaten, prioritering, paargeneratie, connectiviteitscontroles (BindingRequest met USE-CANDIDATE), nominatie en consent freshness.
TsgcICEClient
Windows, macOS, Linux, iOS, Android
Enterprise
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();
Een herbruikbare ICE-engine die onder TsgcRTCPeerConnection past — of op zichzelf draait voor niet-WebRTC P2P.
Somt host-kandidaten op vanaf elke lokale interface, server-reflexive-kandidaten vanaf elke STUN-server en relay-kandidaten vanaf elke TURN-server — allemaal parallel.
Berekent de prioriteiten van kandidaatparen volgens RFC 8445 §6.1.2 en ordent de check-lijst. Frozen pairs ontdooien zodra hun foundation vooruitgang boekt.
Verstuurt STUN-BindingRequests met PRIORITY-, ICE-CONTROLLING- / ICE-CONTROLLED- en USE-CANDIDATE-attributen volgens de standaard. Triggered checks worden gestart bij inkomende stimulus.
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.
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.
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. | Openen | |
| Demoproject — Demos\35.P2P\04.ICE Kant-en-klaar voorbeeldproject. Wordt meegeleverd in de sgcWebSockets-package — download hieronder de proefversie. | Openen | |
| Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi & C++ Builder en primaire bronverwijzingen — alleen voor deze component. | Openen | |
| Gebruikershandleiding (PDF) Uitgebreide handleiding die elke component in de bibliotheek behandelt. | Openen |