ICE Client

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

Professional / Enterprise

Configura servidores, recopila, intercambia, comprueba

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

uses
  sgcP2P;

var
  ICE: TsgcICEClient;
begin
  ICE := TsgcICEClient.Create(nil);
  ICE.IceServers.Add('stun:stun.l.google.com:19302');
  ICE.IceServers.Add('turn:turn.example.com', 'alice', 'secret');

  ICE.OnICELocalCandidate := procedure(Sender: TObject;
    const aCandidate: string)
  begin
    SignalToPeer(aCandidate); // fuera de banda SDP / WebSocket
  end;

  ICE.OnICEConnectionStateChanged := procedure(Sender: TObject;
    const aState: TsgcICEConnectionState)
  begin
    Memo1.Lines.Add('ICE: ' + GetEnumName(TypeInfo(TsgcICEConnectionState), Ord(aState)));
  end;

  ICE.GatherCandidates;
end;
// uses: sgcP2P
TsgcICEClient *ICE = new TsgcICEClient(this);
ICE->IceServers->Add("stun:stun.l.google.com:19302");
ICE->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 OnICEConnectionStateChanged con iceConnected, luego iceCompleted en el par final seleccionado.

Implementa los sondeos de consent-freshness de RFC 7675 — STUN BindingRequests periódicos en el par nominado, con OnICEConnectionStateChanged(iceFailed) cuando se pierde el consentimiento.

Agnóstico al canal de señalización

El componente no asume un canal de señalización concreto — tú envías los candidatos locales por tu señalización WebSocket / SIP / HTTP y devuelves los candidatos remotos.

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.

¿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.