TsgcQUICServer

TsgcQUICServer es un servidor QUIC de bajo nivel que escucha conexiones QUIC sobre UDP e intercambia datos a través de streams QUIC.

Introducción

TsgcQUICServer implementa un servidor QUIC de bajo nivel (RFC 9000) que escucha conexiones QUIC sobre UDP e intercambia datos de aplicación a través de QUIC streams. Por defecto se ejecuta sobre la API de listener QUIC integrada de OpenSSL 3.5+, y recurre al motor QUIC propio de sgc cuando esa API no está disponible; con QUICOptions.SSLOptions.IOHandler = iohNativeTLS usa siempre el motor sgc con el protocolo de enlace TLS 1.3 sobre el motor TLS nativo. La propiedad de solo lectura QUICMode indica el motor seleccionado al arrancar. QUIC siempre se ejecuta sobre TLS 1.3 y se requieren un certificado de servidor y una clave privada. Vea QUIC para la comparación de motores. Siga los pasos a continuación para configurar este componente:

1. Cree una nueva instancia del componente TsgcQUICServer.

2. Establezca el Port de escucha y configure el certificado del servidor y la clave privada mediante QUICOptions.SSLOptions.

3. Gestione los eventos OnQUICConnect y OnQUICData y llame a Start para comenzar a escuchar. ejemplo:


    oServer := TsgcQUICServer.Create(nil);
    oServer.Port := 4433;
    oServer.QUICOptions.SSLOptions.CertFile := 'cert.pem';
    oServer.QUICOptions.SSLOptions.KeyFile := 'key.pem';
    oServer.OnQUICConnect := OnQUICConnectEvent;
    oServer.OnQUICData := OnQUICDataEvent;
    oServer.Start;

    procedure OnQUICDataEvent(Sender: TObject; const aConnection:
        TsgcQUICServerConnection; const aData: TBytes);
    begin
      // echo the received bytes back to the peer
      oServer.WriteData(aConnection, aData);
    end;

Referencia

Propiedades clave

NombreDescripción
ActiveIndica si el servidor QUIC está activo y escuchando conexiones entrantes.
PortPuerto UDP al que el servidor se enlaza y en el que escucha las conexiones QUIC entrantes.
QUICOptionsConfiguración del servidor, incluidos el certificado TLS y la clave privada, y el máximo de conexiones.

Métodos clave

NombreDescripción
StartCarga OpenSSL, crea el listener QUIC y comienza a aceptar conexiones.
StopDeja de escuchar, cierra todas las conexiones activas y libera el listener QUIC.
WriteDataEnvía bytes de aplicación a un par conectado a través de su stream QUIC predeterminado.

Eventos clave

NombreDescripción
OnQUICConnectSe activa cuando se ha aceptado una nueva conexión QUIC y su primer stream está listo.
OnQUICDataSe activa cuando se reciben datos de la aplicación desde un peer a través de su QUIC stream predeterminado.
OnQUICDisconnectSe activa cuando se ha cerrado una conexión QUIC.

Ejemplo completo


oServer := TsgcQUICServer.Create(nil);
oServer.Port := 4433;
oServer.QUICOptions.SSLOptions.CertFile := 'cert.pem';
oServer.QUICOptions.SSLOptions.KeyFile := 'key.pem';
oServer.OnQUICConnect := OnQUICConnectEvent;
oServer.OnQUICData := OnQUICDataEvent;
oServer.OnQUICDisconnect := OnQUICDisconnectEvent;
oServer.OnQUICException := OnQUICExceptionEvent;
oServer.Start;

procedure OnQUICConnectEvent(Sender: TObject; const aConnection: TsgcQUICServerConnection);
begin
  Log('Connected: ' + aConnection.PeerIP);
end;

procedure OnQUICDataEvent(Sender: TObject; const aConnection: TsgcQUICServerConnection; const aData: TBytes);
begin
  // echo the received bytes back to the peer
  oServer.WriteData(aConnection, aData);
end;

procedure OnQUICDisconnectEvent(Sender: TObject; const aConnection: TsgcQUICServerConnection; aCode: Int64; const aReason: string);
begin
  Log('Disconnected: ' + aReason);
end;

procedure OnQUICExceptionEvent(Sender: TObject; const aConnection: TsgcQUICServerConnection; const aException: Exception);
begin
  Log('Error: ' + aException.Message);
end;

Requisitos

RequisitoDetalle
EdiciónEdición Enterprise.
Directiva de compilaciónSGC_QUIC debe estar habilitado en sgcVer.inc.
UnidadsgcQUIC_Server
OpenSSLOpenSSL 3.5 o posterior, que proporciona la API del listener QUIC. Con iohNativeTLS no se necesita OpenSSL.