TsgcQUICServer es un servidor QUIC de bajo nivel que escucha conexiones QUIC sobre UDP e intercambia datos a través de streams QUIC.
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;
| Nombre | Descripción |
|---|---|
| Active | Indica si el servidor QUIC está activo y escuchando conexiones entrantes. |
| Port | Puerto UDP al que el servidor se enlaza y en el que escucha las conexiones QUIC entrantes. |
| QUICOptions | Configuración del servidor, incluidos el certificado TLS y la clave privada, y el máximo de conexiones. |
| Nombre | Descripción |
|---|---|
| Start | Carga OpenSSL, crea el listener QUIC y comienza a aceptar conexiones. |
| Stop | Deja de escuchar, cierra todas las conexiones activas y libera el listener QUIC. |
| WriteData | Envía bytes de aplicación a un par conectado a través de su stream QUIC predeterminado. |
| Nombre | Descripción |
|---|---|
| OnQUICConnect | Se activa cuando se ha aceptado una nueva conexión QUIC y su primer stream está listo. |
| OnQUICData | Se activa cuando se reciben datos de la aplicación desde un peer a través de su QUIC stream predeterminado. |
| OnQUICDisconnect | Se activa cuando se ha cerrado una conexión QUIC. |
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;
| Requisito | Detalle |
|---|---|
| Edición | Edición Enterprise. |
| Directiva de compilación | SGC_QUIC debe estar habilitado en sgcVer.inc. |
| Unidad | sgcQUIC_Server |
| OpenSSL | OpenSSL 3.5 o posterior, que proporciona la API del listener QUIC. Con iohNativeTLS no se necesita OpenSSL. |