TsgcQUICServer est un serveur QUIC de bas niveau qui écoute les connexions QUIC via UDP et échange des données via des flux QUIC.
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;
| Nom | Description |
|---|---|
| Active | Indique si le serveur QUIC est actif et écoute les connexions entrantes. |
| Port | Port UDP sur lequel le serveur se lie et écoute les connexions QUIC entrantes. |
| QUICOptions | Configuration du serveur, incluant le certificat TLS et la clé privée ainsi que le nombre maximal de connexions. |
| Nom | Description |
|---|---|
| Start | Charge OpenSSL, crée le listener QUIC et commence à accepter les connexions. |
| Stop | Arrête l'écoute, ferme toutes les connexions actives et libère le listener QUIC. |
| WriteData | Envoie des octets applicatifs à un pair connecté via son flux QUIC par défaut. |
| Nom | Description |
|---|---|
| OnQUICConnect | Se déclenche lorsqu'une nouvelle connexion QUIC a été acceptée et que son premier flux est prêt. |
| OnQUICData | Se déclenche lorsque des données applicatives sont reçues d'un pair sur son flux QUIC par défaut. |
| OnQUICDisconnect | Se déclenche lorsqu'une connexion QUIC a été fermée. |
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 | Détail |
|---|---|
| Édition | Édition Enterprise. |
| Définition du compilateur | SGC_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. |