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.

TsgcICEClient

Implementiert den RFC-8445-ICE-Zustandsautomaten — Kandidatensammlung, Priorisierung, Paargenerierung, Konnektivitätsprüfungen (BindingRequest mit USE-CANDIDATE), Nominierung und Consent-Freshness.

Komponentenklasse

TsgcICEClient

Protokoll

ICE (RFC 8445)

Plattformen

Windows, macOS, Linux, iOS, Android

Edition

Enterprise

Server konfigurieren, sammeln, austauschen, prüfen

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();

Was steckt drin

Eine wiederverwendbare ICE-Engine, die unter TsgcRTCPeerConnection einsetzt — oder eigenständig für Nicht-WebRTC-P2P läuft.

Kandidatensammlung

Listet Host-Kandidaten von jedem lokalen Interface, Server-Reflexive-Kandidaten von jedem STUN-Server und Relayed-Kandidaten von jedem TURN-Server — alles parallel.

Paargenerierung & Priorisierung

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.

Konnektivitätsprüfungen

Sendet STUN-BindingRequests mit PRIORITY-, ICE-CONTROLLING-/ICE-CONTROLLED- und USE-CANDIDATE-Attributen gemäß Standard. Triggered Checks werden bei eingehendem Stimulus ausgelöst.

Nominierung

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.

Signalling-agnostisch

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.

Spezifikationen & Referenzen

Maßgebliche Quellen für das Protokoll, das diese Komponente implementiert.

Dokumentation & Demos

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.
Demo-Projekt — Demos\35.P2P\04.ICE Sofort lauffähiges Beispielprojekt. Wird im sgcWebSockets-Paket mitgeliefert — lade unten die Testversion herunter.
Technisches Dokument (PDF) Funktionen, Schnellstart, Code-Beispiele für Delphi & C++ Builder und Primärquellen-Referenzen — nur diese Komponente.
Benutzerhandbuch (PDF) Umfassendes Handbuch, das jede Komponente der Bibliothek abdeckt.
Bestes Preis-Leistungs-Verhältnis: All-AccessAlle eSeGeCe-Produkte, inklusive Premium-Support, ab €1,059 pro Jahr.
All-Access-Preise ansehen

Bereit, ICE in Delphi zu betreiben?

Lade die kostenlose Testversion herunter und ergänze deine Delphi-Anwendungen um vollständige ICE-Kandidatensammlung und Konnektivitätsprüfungen.