TsgcQUICClient

TsgcQUICClient é um cliente QUIC de baixo nível (RFC 9000) que abre uma conexão QUIC com um servidor e troca dados via streams QUIC.

Introdução

TsgcQUICClient é um cliente QUIC de baixo nível que implementa o transporte definido na RFC 9000. Abre uma conexão QUIC com um servidor e troca dados por streams QUIC, sendo construído sobre a implementação QUIC fornecida pelo OpenSSL 3.5 ou posterior. Siga os passos abaixo para configurar este componente:

O mecanismo QUIC segue o SSLQUICOptions.IOHandler: com iohOpenSSL (padrão) é usado o mecanismo integrado do OpenSSL 3.5+ (qmBuiltin) quando disponível, com o mecanismo QUIC sgc (qmCustom) como alternativa; com iohNativeTLS o mecanismo QUIC sgc é sempre usado e o handshake TLS 1.3 roda sobre o mecanismo TLS nativo, com tíquetes de sessão, retomada e 0-RTT; a proteção de pacotes também é nativa, então o OpenSSL não é carregado. Ambos os mecanismos suportam múltiplos streams (EnableMultiStream, OpenStream). Veja QUIC para a comparação completa dos mecanismos.

1. Crie uma nova instância do componente TsgcQUICClient e defina o Host e a Port do servidor QUIC.

2. Trate o evento OnQUICConnect, abra a conexão definindo Active como True e envie dados com WriteData. exemplo:


    oClient := TsgcQUICClient.Create(nil);
    oClient.Host := 'www.example.com';
    oClient.Port := 443;
    oClient.SSLQUIC := True;
    oClient.OnQUICConnect := OnQUICConnectEvent;
    oClient.Active := True;

    oClient.WriteData('Hello QUIC');

    procedure OnQUICConnectEvent(Sender: TObject; const
        Connection: TsgcQUICConnectionClient);
    begin
      ShowMessage('Connected to QUIC server');
    end;

Referência

Principais Propriedades

NameDescrição
ActiveAbre ou fecha a conexão QUIC com o servidor remoto.
HostEndereço IP ou nome DNS do servidor QUIC ao qual o cliente irá se conectar.
PortPorta UDP utilizada para conectar ao servidor QUIC.
SSLQUICHabilita a camada segura TLS 1.3 que o QUIC requer (habilitada por padrão).
QUICOptionsOpções de ajuste no lado do cliente para o transporte QUIC.

Métodos Principais

NameDescrição
ConnectAbre a conexão QUIC ao servidor e aguarda até que seja estabelecida ou o timeout expire.
DisconnectFecha a conexão QUIC com o servidor.
WriteDataEnvia dados ao servidor pelo stream QUIC padrão.
OpenStreamAbre um novo stream QUIC e o retorna para que dados possam ser enviados por ele.

Eventos Principais

NameDescrição
OnQUICConnectDisparado logo após o cliente conectar com sucesso ao servidor QUIC.
OnQUICDisconnectÉ disparado quando a conexão QUIC foi fechada.
OnQUICExceptionÉ disparado quando uma exceção é gerada na conexão QUIC.

Exemplo Completo


oClient := TsgcQUICClient.Create(nil);
oClient.Host := 'www.example.com';
oClient.Port := 443;
oClient.SSLQUIC := True;
oClient.OnQUICConnect := OnQUICConnectEvent;
oClient.OnQUICDisconnect := OnQUICDisconnectEvent;
oClient.OnQUICException := OnQUICExceptionEvent;

if oClient.Connect then
begin
  oClient.WriteData('Hello QUIC');
  oClient.Disconnect;
end;

procedure OnQUICConnectEvent(Sender: TObject; const Connection: TsgcQUICConnectionClient);
begin
  Log('connected');
end;

procedure OnQUICDisconnectEvent(Sender: TObject; const Connection: TsgcQUICConnectionClient; const Code: Integer);
begin
  Log('disconnected, code ' + IntToStr(Code));
end;

procedure OnQUICExceptionEvent(Sender: TObject; E: Exception);
begin
  Log('error: ' + E.Message);
end;

Requisitos