TsgcQUICServer

TsgcQUICServer est un serveur QUIC de bas niveau qui écoute les connexions QUIC via UDP et échange des données via des flux QUIC.

Introduction

TsgcQUICServer implémente un serveur QUIC bas niveau (RFC 9000) qui écoute les connexions QUIC sur UDP et échange des données applicatives sur des flux QUIC. Par défaut, il s'exécute sur l'API listener QUIC intégrée d'OpenSSL 3.5+, et se replie sur le moteur QUIC propre à sgc lorsque cette API n'est pas disponible ; avec QUICOptions.SSLOptions.IOHandler = iohNativeTLS, il utilise toujours le moteur sgc avec la poignée de main TLS 1.3 sur le moteur TLS natif. La propriété en lecture seule QUICMode indique le moteur sélectionné au démarrage. QUIC fonctionne toujours sur TLS 1.3 et un certificat serveur ainsi qu'une clé privée sont requis. Voir QUIC pour la comparaison des moteurs. Suivez les étapes ci-dessous pour configurer ce composant :

1. Créez une nouvelle instance du composant TsgcQUICServer.

2. Définissez le Port d'écoute et configurez le certificat serveur et la clé privée via QUICOptions.SSLOptions.

3. Gérez les événements OnQUICConnect et OnQUICData et appelez Start pour commencer à écouter. exemple :


    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;

Référence

Propriétés clés

NomDescription
ActiveIndique si le serveur QUIC est actif et écoute les connexions entrantes.
PortPort UDP sur lequel le serveur se lie et écoute les connexions QUIC entrantes.
QUICOptionsConfiguration du serveur, incluant le certificat TLS et la clé privée ainsi que le nombre maximal de connexions.

Méthodes clés

NomDescription
StartCharge OpenSSL, crée le listener QUIC et commence à accepter les connexions.
StopArrête l'écoute, ferme toutes les connexions actives et libère le listener QUIC.
WriteDataEnvoie des octets applicatifs à un pair connecté via son flux QUIC par défaut.

Événements clés

NomDescription
OnQUICConnectSe déclenche lorsqu'une nouvelle connexion QUIC a été acceptée et que son premier flux est prêt.
OnQUICDataSe déclenche lorsque des données applicatives sont reçues d'un pair sur son flux QUIC par défaut.
OnQUICDisconnectSe déclenche lorsqu'une connexion QUIC a été fermée.

Exemple complet


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;

Prérequis

PrérequisDétail
ÉditionÉdition Enterprise.
Définition du compilateurSGC_QUIC doit être activé dans sgcVer.inc.
UnitésgcQUIC_Server
OpenSSL OpenSSL 3.5 ou version ultérieure avec IOHandler = iohOpenSSL, qui fournit l'API du listener QUIC. Avec iohNativeTLS, OpenSSL n'est pas nécessaire.