TsgcQUICServer, UDP üzerinden QUIC bağlantılarını dinleyen ve QUIC akışları üzerinden veri alışverişi yapan düşük seviyeli bir QUIC sunucusudur.
TsgcQUICServer, QUIC bağlantılarını UDP üzerinden dinleyen ve QUIC akışları üzerinden uygulama verisi alışverişi yapan düşük seviyeli bir QUIC sunucusu (RFC 9000) uygular. Varsayılan olarak OpenSSL 3.5+ yerleşik QUIC dinleyici API'si üzerinde çalışır; yüklü OpenSSL kütüphanesi bunu dışa aktarmıyorsa sgc QUIC motoruna geri döner ve QUICOptions.SSLOptions.IOHandler = iohNativeTLS ile her zaman sgc motorunu, TLS 1.3 el sıkışmasını yerel TLS motoru üzerinde kullanır. Başlangıçta seçilen motor salt okunur QUICMode özelliğinde bildirilir; motor karşılaştırması için bkz. QUIC. QUIC her zaman TLS 1.3 üzerinden çalışır ve bir sunucu sertifikası ile özel anahtar gereklidir. Bu bileşeni yapılandırmak için aşağıdaki adımları izleyin:
1. TsgcQUICServer bileşeninin yeni bir örneğini oluşturun.
2. Dinleme Port'unu ayarlayın ve sunucu sertifikasını ile özel anahtarı QUICOptions.SSLOptions aracılığıyla yapılandırın.
3. OnQUICConnect ve OnQUICData olaylarını işleyin ve dinlemeye başlamak için Start çağırın. örnek:
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;
| Name | Açıklama |
|---|---|
| Active | QUIC sunucusunun etkin olup olmadığını ve gelen bağlantıları dinleyip dinlemediğini gösterir. |
| Port | Sunucunun gelen QUIC bağlantıları için bağlandığı ve dinlediği UDP portu. |
| QUICOptions | Zorunlu TLS sertifikası ve özel anahtar ile maksimum bağlantı sayısı dahil sunucu yapılandırması. |
| Name | Açıklama |
|---|---|
| Start | OpenSSL'i yükler, QUIC dinleyicisini oluşturur ve bağlantıları kabul etmeye başlar. |
| Stop | Dinlemeyi durdurur, tüm etkin bağlantıları kapatır ve QUIC dinleyicisini serbest bırakır. |
| WriteData | Bağlı bir eşe varsayılan QUIC akışı üzerinden uygulama baytları gönderir. |
| Name | Açıklama |
|---|---|
| OnQUICConnect | Yeni bir QUIC bağlantısı kabul edildiğinde ve ilk akışı hazır olduğunda tetiklenir. |
| OnQUICData | Varsayılan QUIC akışı üzerinden bir eşten uygulama verisi alındığında tetiklenir. |
| OnQUICDisconnect | Bir QUIC bağlantısı kapatıldığında tetiklenir. |
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;
| Gereksinim | Ayrıntı |
|---|---|
| Sürüm | Enterprise sürümü. |
| Derleyici tanımı | SGC_QUIC, sgcVer.inc'te etkinleştirilmiş olmalıdır. |
| Birim | sgcQUIC_Server |
| OpenSSL | IOHandler = iohOpenSSL ile QUIC dinleyici API'sini sağlayan OpenSSL 3.5 veya üzeri; iohNativeTLS ile OpenSSL gerekmez. |