QUIC サーバー
TsgcQUICServer — 生の QUIC トランスポートサーバー(RFC 9000)です。UDP ポートをバインドし、証明書と鍵を読み込み、TLS 1.3 を終端し、QUIC のコネクションとストリームごとにイベントで処理します。QUIC の上に独自のプロトコルを構築でき、Delphi、C++ Builder、.NET で利用できます。
TsgcQUICServer — 生の QUIC トランスポートサーバー(RFC 9000)です。UDP ポートをバインドし、証明書と鍵を読み込み、TLS 1.3 を終端し、QUIC のコネクションとストリームごとにイベントで処理します。QUIC の上に独自のプロトコルを構築でき、Delphi、C++ Builder、.NET で利用できます。
生の QUIC のペアのうち、リスナー側です。ポートと PEM 証明書を指定してアクティブにすれば、コネクションとストリームデータをイベントで処理できます。OpenSSL 3.5 のネイティブ QUIC エンジン上に構築されています。
TsgcQUICServer
UDP 上の QUIC(RFC 9000)、TLS 1.3
Delphi, C++ Builder, .NET
QUICOptions でポートと証明書 / 鍵を設定し、QUIC イベントをフックしてから Active を設定します。コネクションのストリームへの応答は WriteData で行います。
uses
sgcQUIC_Server;
var
oServer: TsgcQUICServer;
begin
oServer := TsgcQUICServer.Create(nil);
oServer.Port := 443;
oServer.QUICOptions.SSLOptions.CertFile := 'cert.pem';
oServer.QUICOptions.SSLOptions.KeyFile := 'key.pem';
oServer.OnQUICConnect := OnQUICConnectHandler;
oServer.OnQUICData := OnQUICDataHandler; // bytes from a client
oServer.OnQUICDisconnect := OnQUICDisconnectHandler;
oServer.Active := True;
end;
// includes: sgcQUIC_Server.hpp
TsgcQUICServer *oServer = new TsgcQUICServer(NULL);
oServer->Port = 443;
oServer->QUICOptions->SSLOptions->CertFile = "cert.pem";
oServer->QUICOptions->SSLOptions->KeyFile = "key.pem";
oServer->OnQUICConnect = OnQUICConnectHandler;
oServer->OnQUICData = OnQUICDataHandler; // bytes from a client
oServer->OnQUICDisconnect = OnQUICDisconnectHandler;
oServer->Active = true;
using esegece.sgcWebSockets;
var oServer = new TsgcQUICServer();
oServer.Port = 443;
oServer.QUICOptions.SSLOptions.CertFile = "cert.pem";
oServer.QUICOptions.SSLOptions.KeyFile = "key.pem";
oServer.OnQUICConnect += OnQUICConnectHandler;
oServer.OnQUICData += OnQUICDataHandler; // bytes from a client
oServer.OnQUICDisconnect += OnQUICDisconnectHandler;
oServer.Active = true;
最もよく使うメンバー。
Port と Active が UDP リスナーをバインド・解放します。Start / Stop で明示的に操作することもできます。
QUICOptions.SSLOptions.CertFile と KeyFile が、TLS 1.3 ハンドシェイク用の PEM 証明書と秘密鍵を読み込みます。
OpenStream(aConnection) はサーバー起点のストリームを開きます。builtin エンジンでは 1 コネクションあたり複数のストリームを扱えます。
WriteData(aConnection, …) は、ストリーム上でクライアントに string または TBytes のペイロードを書き戻します。
OnQUICConnect、OnQUICData、OnQUICStreamData、OnQUICDisconnect、OnQUICException が、コネクションのライフサイクルと受信バイト列を扱います。
OnStartup と OnShutdown は、リスナーの起動・停止時に発生します。