Cliente ICE para Delphi

Ejecuta el algoritmo ICE completo en Delphi/C++Builder — recopila candidatos host, server-reflexive y relay, realiza comprobaciones de conectividad STUN y nomina el mejor par según RFC 8445.

TsgcICEClient

Implementa la máquina de estados ICE de RFC 8445 — recopilación de candidatos, priorización, generación de pares, comprobaciones de conectividad (BindingRequest con USE-CANDIDATE), nominación y consent freshness.

Clase del componente

TsgcICEClient

Protocolo

ICE (RFC 8445)

Plataformas

Windows, macOS, Linux, iOS, Android

Edición

Enterprise

Configura servidores, recopila, intercambia, comprueba

Configura los servidores ICE STUN/TURN, llama a GatherCandidates, intercambia la lista de candidatos con el par (fuera de banda) y luego ProcessCandidates para ejecutar las comprobaciones y nominar un par funcional.

uses
  sgcP2P, sgcP2P_ICE_Classes;

// TFormICE contiene FClient: TsgcICEClient y 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 es la línea de candidato, lista para tu canal de señalización
  SignalToPeer(aCandidate.AsString);
end;

// los candidatos remotos llegan por tu canal de señalización
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();

Qué incluye

Un motor ICE reutilizable que se sitúa debajo de TsgcRTCPeerConnection — o funciona por sí solo para P2P sin WebRTC.

Recopilación de candidatos

Enumera candidatos host de cada interfaz local, candidatos server-reflexive de cada servidor STUN, candidatos relay de cada servidor TURN — todo en paralelo.

Generación y priorización de pares

Calcula las prioridades de pares de candidatos según RFC 8445 §6.1.2 y ordena la lista de comprobación. Los pares congelados se descongelan a medida que su foundation progresa.

Comprobaciones de conectividad

Envía STUN BindingRequests con los atributos PRIORITY, ICE-CONTROLLING / ICE-CONTROLLED y USE-CANDIDATE según el estándar. Las comprobaciones activadas se disparan ante el estímulo entrante.

Nominación

Cuando un par tiene éxito y el agente controlador marca USE-CANDIDATE, el componente dispara OnICECandidatePairNominated con el par ganador, y aCandidatePair.Local / Remote te indican qué dos direcciones ha elegido.

Implementa los sondeos de consent-freshness de RFC 7675: una petición Binding en el par nominado cada ConsentInterval milisegundos, y OnICECandidatePairFailed con el motivo Consent Freshness Timeout cuando pasa ConsentTimeout sin respuesta.

Agnóstico al canal de señalización

El componente no asume ningún canal de señalización concreto. Tú pones aCandidate.AsString en tu señalización WebSocket, SIP o HTTP, y pasas lo que llega de vuelta a AddRTCIceCandidate seguido de ProcessCandidates.

Especificaciones y referencias

Fuentes autorizadas del protocolo que implementa este componente.

Documentación y demos

Accede a la referencia del componente, descarga el proyecto demo listo para ejecutar y la versión de prueba.

Ayuda en línea — TsgcICEClient Referencia completa de propiedades, métodos y eventos de este componente.
Proyecto demo — Demos\35.P2P\04.ICE Proyecto de ejemplo listo para ejecutar. Se incluye dentro del paquete sgcWebSockets — descarga la prueba abajo.
Documento técnico (PDF) Características, inicio rápido, ejemplos de código para Delphi y C++ Builder y referencias a fuentes primarias — solo este componente.
Manual de usuario (PDF) Manual completo que cubre cada componente de la biblioteca.
La mejor opción: All-AccessTodos los productos de eSeGeCe, con Premium Support incluido, desde €1,059 al año.
Ver precios de All-Access

¿Listo para ejecutar ICE en Delphi?

Descarga la prueba gratuita y añade la recopilación completa de candidatos ICE y comprobaciones de conectividad a tus aplicaciones Delphi.