TsgcQUICServer is een laag-niveau QUIC-server die luistert naar QUIC-verbindingen via UDP en gegevens uitwisselt via QUIC-streams.
TsgcQUICServer implementeert een laagniveau QUIC-server (RFC 9000) die luistert naar QUIC-verbindingen via UDP en applicatiegegevens uitwisselt via QUIC-streams. Het is gebouwd op de OpenSSL 3.5+ QUIC-listener-API, dus QUIC werkt altijd over TLS 1.3 en een servercertificaat en privésleutel zijn vereist. Volg de onderstaande stappen om dit component te configureren:
De server draait standaard op de ingebouwde OpenSSL 3.5+ QUIC-engine wanneer de geladen OpenSSL-bibliotheek die exporteert, en valt anders terug op de sgc QUIC-engine. Met QUICOptions.SSLOptions.IOHandler = iohNativeTLS wordt altijd de sgc-engine gebruikt, met de TLS 1.3-handshake op de native TLS-engine. De alleen-lezen eigenschap QUICMode meldt welke engine bij het starten is gekozen. Zie QUIC voor de vergelijking van de engines.
1. Maak een nieuwe instantie van de TsgcQUICServer-component aan.
2. Stel de luister-Port in en configureer het servercertificaat en de privésleutel via QUICOptions.SSLOptions.
3. Behandel de OnQUICConnect- en OnQUICData-gebeurtenissen en roep Start aan om te beginnen met luisteren. voorbeeld:
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;
| Naam | Beschrijving |
|---|---|
| Active | Geeft aan of de QUIC-server actief is en luistert naar inkomende verbindingen. |
| Port | UDP-poort waaraan de server gebonden is en waarop hij luistert naar inkomende QUIC-verbindingen. |
| QUICOptions | Serverconfiguratie, inclusief het TLS-certificaat, de privésleutel en het maximale aantal verbindingen. |
| Naam | Beschrijving |
|---|---|
| Start | Laadt OpenSSL, maakt de QUIC-listener aan en begint verbindingen te accepteren. |
| Stop | Stopt het luisteren, sluit elke actieve verbinding en geeft de QUIC-listener vrij. |
| WriteData | Verstuurt applicatiebytes naar een verbonden peer via diens standaard QUIC-stream. |
| Naam | Beschrijving |
|---|---|
| OnQUICConnect | Wordt geactiveerd wanneer een nieuwe QUIC-verbinding is geaccepteerd en de eerste stream gereed is. |
| OnQUICData | Wordt geactiveerd wanneer applicatiegegevens worden ontvangen van een peer via zijn standaard QUIC-stream. |
| OnQUICDisconnect | Wordt geactiveerd wanneer een QUIC-verbinding is gesloten. |
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;
| Vereiste | Detail |
|---|---|
| Editie | Enterprise-editie. |
| Compileerdefinitie | SGC_QUIC moet ingeschakeld zijn in sgcVer.inc. |
| Unit | sgcQUIC_Server |
| OpenSSL | OpenSSL 3.5 of hoger met IOHandler = iohOpenSSL, dat de QUIC-listener-API biedt. Met iohNativeTLS is OpenSSL niet nodig. |