TsgcQUICServer › Eigenschaften › Host
Bind-Adresse für den Listener. Sie akzeptiert eine IPv4-Adresse, eine IPv6-Adresse oder einen Hostnamen und bindet jede Schnittstelle, wenn sie leer gelassen wird.
property Host: String read FHost write FHost;
'' (Delphi), "0.0.0.0" (.NET)
Host wird von der UDP-Server-Basisklasse geerbt und wählt die lokale Schnittstelle aus, an die sich der Listener bindet.
Der Delphi-Listener bindet die von Ihnen gesetzte Adresse. Wenn Start den Listener erstellt, löst er Host auf und bindet den UDP-Socket an diese Adresse, sodass der Server QUIC-Verbindungen nur auf dieser Schnittstelle annimmt. Ein leerer Host bindet den Dual-Stack-IPv6-Platzhalter ::, sodass ein einziger Listener sowohl IPv6- als auch IPv4-Gegenstellen auf dem Port annimmt. Auf einer Maschine ohne IPv6-Stack fällt er auf 0.0.0.0 zurück, den IPv4-Platzhalter. Dies gilt für beide QUIC-Engines, die integrierte OpenSSL-Engine und die sgc-Engine (siehe QUICMode). Wenn Host nicht aufgelöst werden kann, löst Start QUIC Server: Failed to resolve bind address "<host>" aus, umschließen Sie den Aufruf also wie üblich mit einem try..except.
In der .NET-Implementierung wird Host auf dieselbe Weise berücksichtigt: Er wird in den Listener-Endpunkt geparst, wobei ein leerer Wert oder 0.0.0.0 alle IPv4-Schnittstellen bedeutet, :: alle IPv6-Schnittstellen bedeutet und jeder andere Wert als IP-Adresse geparst wird (ein nicht parsbarer Wert fällt auf alle IPv4-Schnittstellen zurück).
Die Adressfamilie richtet sich nach dem gesetzten Wert. Ein Host, der einen Doppelpunkt enthält, wird als IPv6-Literal behandelt, in der blanken Form ::1 oder in der eckig geklammerten Form [::1], die innerhalb von URLs verwendet wird. Jeder andere Wert, ein IPv4-Literal oder ein Hostname, wird über beide Familien aufgelöst, sodass auch ein Name bindet, der nur AAAA-Records veröffentlicht. Löst ein Name zu mehreren Adressen auf, wird jeder Kandidat in der Reihenfolge probiert, die das Betriebssystem zurückgibt, bis einer davon bindet.
Host ist public, wird von TsgcQUICServer aber nicht published, wird also per Code zugewiesen.
oServer := TsgcQUICServer.Create(nil);
// restricts the listener to this interface, leave empty to bind every interface
oServer.Host := '192.168.1.10';
oServer.Port := 4433;
oServer.QUICOptions.SSLOptions.CertFile := 'cert.pem';
oServer.QUICOptions.SSLOptions.KeyFile := 'key.pem';
oServer.Start;