TsgcQUICServer

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.

Giriş

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;

Başvuru

Temel Özellikler

NameAçıklama
ActiveQUIC sunucusunun etkin olup olmadığını ve gelen bağlantıları dinleyip dinlemediğini gösterir.
PortSunucunun gelen QUIC bağlantıları için bağlandığı ve dinlediği UDP portu.
QUICOptionsZorunlu TLS sertifikası ve özel anahtar ile maksimum bağlantı sayısı dahil sunucu yapılandırması.

Temel Yöntemler

NameAçıklama
StartOpenSSL'i yükler, QUIC dinleyicisini oluşturur ve bağlantıları kabul etmeye başlar.
StopDinlemeyi durdurur, tüm etkin bağlantıları kapatır ve QUIC dinleyicisini serbest bırakır.
WriteDataBağlı bir eşe varsayılan QUIC akışı üzerinden uygulama baytları gönderir.

Temel Olaylar

NameAçıklama
OnQUICConnectYeni bir QUIC bağlantısı kabul edildiğinde ve ilk akışı hazır olduğunda tetiklenir.
OnQUICDataVarsayılan QUIC akışı üzerinden bir eşten uygulama verisi alındığında tetiklenir.
OnQUICDisconnectBir QUIC bağlantısı kapatıldığında tetiklenir.

Tam Ö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.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;

Gereksinimler

GereksinimAyrıntı
SürümEnterprise sürümü.
Derleyici tanımıSGC_QUIC, sgcVer.inc'te etkinleştirilmiş olmalıdır.
BirimsgcQUIC_Server
OpenSSLIOHandler = iohOpenSSL ile QUIC dinleyici API'sini sağlayan OpenSSL 3.5 veya üzeri; iohNativeTLS ile OpenSSL gerekmez.