TsgcQUICServer › Methoden › Start

Start Methode

Lädt OpenSSL, erstellt den QUIC-Listener und beginnt, eingehende Verbindungen anzunehmen.

Syntax

procedure Start;

Hinweise

Start führt den vollständigen Serverstart durch: Es prüft, ob QUICOptions.SSLOptions.CertFile und KeyFile gesetzt sind, lädt die OpenSSL-Bibliothek, erstellt den SSL-Kontext, registriert den ALPN-Auswahl-Callback (QUIC schreibt ALPN vor, der Callback bevorzugt h3 und nimmt andernfalls das erste Angebot des Peers), erstellt den QUIC-Listener, der über UDP an Port gebunden ist, und startet einen Hintergrund-Thread, der die QUIC-Ereignisschleife antreibt: Verbindungen annehmen, Handshakes vorantreiben und Stream-Daten lesen. Nach der Rückkehr wird OnQUICConnect für jede angenommene Verbindung ausgelöst.

Eine Ausnahme wird ausgelöst, wenn das Zertifikat oder der private Schlüssel fehlt oder nicht geladen werden kann, wenn der Schlüssel nicht zum Zertifikat passt, wenn der UDP-Port nicht gebunden werden kann, wenn Host nicht aufgelöst werden kann oder wenn das installierte OpenSSL älter als 3.5 ist (die Version, die die QUIC-Server-API SSL_new_listener eingeführt hat). Fassen Sie den Aufruf in ein try..except ein, die Fälle von Fehlkonfiguration treten alle hier zutage. Start läuft im Thread des Aufrufers und löst direkt aus, daher erreichen diese Ausnahmen OnQUICException nicht.

Der Listener bindet die Adresse in Host. Ein Wert, der einen Doppelpunkt enthält, ist ein IPv6-Literal, und jeder andere Wert, ein IPv4-Literal oder ein Hostname, wird über beide Adressfamilien aufgelöst. Ein leeres Host bindet den Dual-Stack-IPv6-Platzhalter, der IPv4- und IPv6-Gegenstellen gleichermaßen annimmt, und fällt nur auf einer Maschine ohne IPv6-Stack auf 0.0.0.0 zurück. Start ist als Active := True implementiert, beide sind daher austauschbar, Active meldet nach einem erfolgreichen Start True, und der Aufruf von Start auf einem bereits gestarteten Server bewirkt nichts. Sobald der Listener gebunden ist und die Ereignisschleife läuft, wird OnStartup ausgelöst, bevor Start zurückkehrt.

Beispiel


oServer.Port := 4433;
oServer.QUICOptions.SSLOptions.CertFile := 'cert.pem';
oServer.QUICOptions.SSLOptions.KeyFile := 'key.pem';
oServer.Start;

Zurück zu Methoden