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.
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;
| Name | Descrição |
|---|---|
| Active | Abre ou fecha a conexão QUIC com o servidor remoto. |
| Host | Endereço IP ou nome DNS do servidor QUIC ao qual o cliente irá se conectar. |
| Port | Porta UDP utilizada para conectar ao servidor QUIC. |
| SSLQUIC | Habilita a camada segura TLS 1.3 que o QUIC requer (habilitada por padrão). |
| QUICOptions | Opções de ajuste no lado do cliente para o transporte QUIC. |
| Name | Descrição |
|---|---|
| Connect | Abre a conexão QUIC ao servidor e aguarda até que seja estabelecida ou o timeout expire. |
| Disconnect | Fecha a conexão QUIC com o servidor. |
| WriteData | Envia dados ao servidor pelo stream QUIC padrão. |
| OpenStream | Abre um novo stream QUIC e o retorna para que dados possam ser enviados por ele. |
| Name | Descrição |
|---|---|
| OnQUICConnect | Disparado 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. |
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;