TsgcQUICServer è un server QUIC di basso livello che è in ascolto per connessioni QUIC su UDP e scambia dati su stream QUIC.
TsgcQUICServer implementa un server QUIC di basso livello (RFC 9000) che resta in ascolto per connessioni QUIC su UDP e scambia dati applicativi su stream QUIC. È costruito sull'API listener QUIC di OpenSSL 3.5+, quindi QUIC funziona sempre su TLS 1.3 e sono necessari un certificato del server e una chiave privata. Seguire i passaggi seguenti per configurare questo componente:
Il server QUIC funziona per impostazione predefinita sul motore QUIC OpenSSL 3.5+ integrato. Chiama OSSL_QUIC_server_method e SSL_new_listener quando la libreria OpenSSL caricata li esporta. In caso contrario ripiega sul motore QUIC sgc, e con QUICOptions.SSLOptions.IOHandler = iohNativeTLS utilizza sempre il motore sgc con l'handshake TLS 1.3 sul motore TLS nativo. La proprietà QUICMode, di sola lettura, riporta il motore selezionato all'avvio. Vedere QUIC per il confronto tra i motori.
1. Creare una nuova istanza del componente TsgcQUICServer.
2. Impostare la Port di ascolto e configurare il certificato del server e la chiave privata tramite QUICOptions.SSLOptions.
3. Gestire gli eventi OnQUICConnect e OnQUICData e chiamare Start per iniziare l'ascolto. esempio:
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;
| Nome | Descrizione |
|---|---|
| Active | Indica se il server QUIC è attivo e in ascolto per le connessioni in entrata. |
| Port | Porta UDP a cui il server si associa e su cui resta in ascolto per le connessioni QUIC in entrata. |
| QUICOptions | Configurazione del server, incluso il certificato TLS, la chiave privata e il numero massimo di connessioni. |
| Nome | Descrizione |
|---|---|
| Start | Carica OpenSSL, crea il listener QUIC e inizia ad accettare connessioni. |
| Stop | Smette di ascoltare, chiude ogni connessione attiva e rilascia il listener QUIC. |
| WriteData | Invia byte applicativi a un peer connesso sullo stream QUIC predefinito. |
| Nome | Descrizione |
|---|---|
| OnQUICConnect | Si attiva quando una nuova connessione QUIC è stata accettata e il suo primo stream è pronto. |
| OnQUICData | Si attiva quando vengono ricevuti dati applicativi da un peer sul suo stream QUIC predefinito. |
| OnQUICDisconnect | Si attiva quando una connessione QUIC è stata chiusa. |
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 | Dettaglio |
|---|---|
| Edizione | Edizione Enterprise. |
| Define del compilatore | SGC_QUIC deve essere abilitato in sgcVer.inc. |
| Unità | sgcQUIC_Server |
| OpenSSL | OpenSSL 3.5 o successivo con IOHandler = iohOpenSSL. Il motore integrato usa l'API del listener QUIC nativo (OSSL_QUIC_server_method, SSL_new_listener) e il motore sgc usa l'API QUIC TLS di OpenSSL 3.5, nessuna delle due presente nelle versioni precedenti. Con iohNativeTLS, OpenSSL non è necessario. |