Delphi ICE Client
Führe den vollständigen ICE-Algorithmus in Delphi/C++Builder aus — sammle Host-, Server-Reflexive- und Relay-Kandidaten, führe STUN-Konnektivitätsprüfungen durch und nominiere das beste Paar gemäß RFC 8445.
Führe den vollständigen ICE-Algorithmus in Delphi/C++Builder aus — sammle Host-, Server-Reflexive- und Relay-Kandidaten, führe STUN-Konnektivitätsprüfungen durch und nominiere das beste Paar gemäß RFC 8445.
Implementiert den RFC-8445-ICE-Zustandsautomaten — Kandidatensammlung, Priorisierung, Paargenerierung, Konnektivitätsprüfungen (BindingRequest mit USE-CANDIDATE), Nominierung und Consent-Freshness.
TsgcICEClient
Windows, macOS, Linux, iOS, Android
Enterprise
Konfiguriere STUN-/TURN-ICE-Server, rufe GatherCandidates auf, tausche die Kandidatenliste mit dem Peer aus (out of band) und rufe dann ProcessCandidates auf, um die Checks laufen zu lassen und ein funktionierendes Paar zu nominieren.
uses
sgcP2P, sgcP2P_ICE_Classes;
// TFormICE enthält FClient: TsgcICEClient und 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 ist die Candidate-Zeile, fertig für deinen Signalling-Kanal
SignalToPeer(aCandidate.AsString);
end;
// Remote-Candidates treffen über deinen Signalling-Kanal ein
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();
Eine wiederverwendbare ICE-Engine, die unter TsgcRTCPeerConnection einsetzt — oder eigenständig für Nicht-WebRTC-P2P läuft.
Listet Host-Kandidaten von jedem lokalen Interface, Server-Reflexive-Kandidaten von jedem STUN-Server und Relayed-Kandidaten von jedem TURN-Server — alles parallel.
Berechnet die Kandidatenpaar-Prioritäten gemäß RFC 8445 §6.1.2 und ordnet die Check-Liste. Frozen-Pairs werden aufgetaut, sobald ihre Foundation Fortschritte macht.
Sendet STUN-BindingRequests mit PRIORITY-, ICE-CONTROLLING-/ICE-CONTROLLED- und USE-CANDIDATE-Attributen gemäß Standard. Triggered Checks werden bei eingehendem Stimulus ausgelöst.
Wenn ein Paar erfolgreich ist und der Controlling-Agent USE-CANDIDATE setzt, löst die Komponente OnICECandidatePairNominated mit dem siegreichen Paar aus, und aCandidatePair.Local / Remote sagen dir, welche beiden Adressen ausgewählt wurden.
Implementiert Consent-Freshness-Probes nach RFC 7675: alle ConsentInterval Millisekunden ein Binding-Request auf dem nominierten Paar, und OnICECandidatePairFailed mit dem Grund Consent Freshness Timeout, sobald ConsentTimeout ohne Antwort verstreicht.
Die Komponente setzt keinen bestimmten Signalling-Kanal voraus. Du legst aCandidate.AsString auf dein WebSocket-, SIP- oder HTTP-Signalling und speist das, was zurückkommt, in AddRTCIceCandidate und anschließend in ProcessCandidates ein.
Springe direkt zur Komponentenreferenz, hole dir das sofort lauffähige Demo-Projekt und lade die Testversion herunter.
| Online-Hilfe — TsgcICEClient Vollständige Referenz zu Eigenschaften, Methoden und Ereignissen dieser Komponente. | Öffnen | |
| Demo-Projekt — Demos\35.P2P\04.ICE Sofort lauffähiges Beispielprojekt. Wird im sgcWebSockets-Paket mitgeliefert — lade unten die Testversion herunter. | Öffnen | |
| Technisches Dokument (PDF) Funktionen, Schnellstart, Code-Beispiele für Delphi & C++ Builder und Primärquellen-Referenzen — nur diese Komponente. | Öffnen | |
| Benutzerhandbuch (PDF) Umfassendes Handbuch, das jede Komponente der Bibliothek abdeckt. | Öffnen |