TsgcQUICServer

TsgcQUICServer is een laag-niveau QUIC-server die luistert naar QUIC-verbindingen via UDP en gegevens uitwisselt via QUIC-streams.

Inleiding

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;

Referentie

Belangrijkste Eigenschappen

NaamBeschrijving
ActiveGeeft aan of de QUIC-server actief is en luistert naar inkomende verbindingen.
PortUDP-poort waaraan de server gebonden is en waarop hij luistert naar inkomende QUIC-verbindingen.
QUICOptionsServerconfiguratie, inclusief het TLS-certificaat, de privésleutel en het maximale aantal verbindingen.

Belangrijkste Methoden

NaamBeschrijving
StartLaadt OpenSSL, maakt de QUIC-listener aan en begint verbindingen te accepteren.
StopStopt het luisteren, sluit elke actieve verbinding en geeft de QUIC-listener vrij.
WriteDataVerstuurt applicatiebytes naar een verbonden peer via diens standaard QUIC-stream.

Belangrijkste Gebeurtenissen

NaamBeschrijving
OnQUICConnectWordt geactiveerd wanneer een nieuwe QUIC-verbinding is geaccepteerd en de eerste stream gereed is.
OnQUICDataWordt geactiveerd wanneer applicatiegegevens worden ontvangen van een peer via zijn standaard QUIC-stream.
OnQUICDisconnectWordt geactiveerd wanneer een QUIC-verbinding is gesloten.

Volledig 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.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;

Vereisten

VereisteDetail
EditieEnterprise-editie.
CompileerdefinitieSGC_QUIC moet ingeschakeld zijn in sgcVer.inc.
UnitsgcQUIC_Server
OpenSSLOpenSSL 3.5 of hoger met IOHandler = iohOpenSSL, dat de QUIC-listener-API biedt. Met iohNativeTLS is OpenSSL niet nodig.