TsgcQUICServer to niskopoziomowy serwer QUIC nasłuchujący połączeń QUIC przez UDP i wymieniający dane przez strumienie QUIC.
TsgcQUICServer implementuje niskopoziomowy serwer QUIC (RFC 9000), który nasłuchuje połączeń QUIC przez UDP i wymienia dane aplikacji przez strumienie QUIC. Domyślnie działa na wbudowanym interfejsie API słuchacza QUIC OpenSSL 3.5+, a gdy ten interfejs jest niedostępny, korzysta z własnego silnika QUIC sgc; z QUICOptions.SSLOptions.IOHandler = iohNativeTLS zawsze używa silnika sgc z uzgadnianiem TLS 1.3 na natywnym silniku TLS. Właściwość tylko do odczytu QUICMode wskazuje silnik wybrany przy starcie. QUIC zawsze działa przez TLS 1.3, a certyfikat serwera i klucz prywatny są wymagane. Zobacz QUIC, aby poznać porównanie silników. Wykonaj poniższe kroki, aby skonfigurować ten komponent:
1. Utwórz nową instancję komponentu TsgcQUICServer.
2. Ustaw nasłuchujący Port i skonfiguruj certyfikat serwera oraz klucz prywatny przez QUICOptions.SSLOptions.
3. Obsłuż zdarzenia OnQUICConnect i OnQUICData i wywołaj Start, aby rozpocząć nasłuchiwanie. przykład:
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;
| Nazwa | Opis |
|---|---|
| Active | Wskazuje, czy serwer QUIC jest aktywny i nasłuchuje przychodzących połączeń. |
| Port | Port UDP, z którym serwer się wiąże i na którym nasłuchuje przychodzących połączeń QUIC. |
| QUICOptions | Konfiguracja serwera, w tym certyfikat TLS i klucz prywatny oraz maksymalna liczba połączeń. |
| Nazwa | Opis |
|---|---|
| Start | Wczytuje OpenSSL, tworzy nasłuch QUIC i rozpoczyna akceptowanie połączeń. |
| Stop | Zatrzymuje nasłuchiwanie, zamyka każde aktywne połączenie i zwalnia nasłuchiwacz QUIC. |
| WriteData | Wysyła bajty aplikacji do połączonego partnera przez jego domyślny strumień QUIC. |
| Nazwa | Opis |
|---|---|
| OnQUICConnect | Wywoływane po zaakceptowaniu nowego połączenia QUIC i gotowości jego pierwszego strumienia. |
| OnQUICData | Uruchamiane po odebraniu danych aplikacji od partnera przez jego domyślny strumień QUIC. |
| OnQUICDisconnect | Uruchamiane, gdy połączenie QUIC zostało zamknięte. |
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;
| Wymaganie | Szczegół |
|---|---|
| Edycja | Edycja Enterprise. |
| Dyrektywa kompilatora | SGC_QUIC musi być włączone w sgcVer.inc. |
| Jednostka | sgcQUIC_Server |
| OpenSSL | OpenSSL 3.5 lub nowszy z IOHandler = iohOpenSSL. Silnik wbudowany korzysta z natywnego API nasłuchiwacza QUIC (OSSL_QUIC_server_method, SSL_new_listener), a silnik sgc z API TLS QUIC OpenSSL 3.5, z których żadne nie istnieje we wcześniejszych wersjach. Z iohNativeTLS OpenSSL nie jest potrzebny. |