QUIC 클라이언트 및 서버
TsgcQUICClient와 TsgcQUICServer는 순수 QUIC를 다뤄요. 암호화된 연결 하나에 여러 개의 독립적인 스트림, 신뢰성 없는 데이터그램, 그리고 클라이언트의 IP 주소가 세션 도중 바뀌어도 유지되는 연결 마이그레이션을 제공해요.
TCP와 TLS는 응답의 첫 바이트가 도착하기까지 왕복 3회가 필요해요. QUIC는 전송 계층과 암호화 핸드셰이크를 하나로 합치고, 재개된 연결은 첫 번째 패킷에서 곧바로 데이터를 보낼 수 있어요. sgcQUIC는 Delphi, C++ Builder, .NET에 네이티브 QUIC 전송과 그 위에 구축된 HTTP/3 클라이언트 및 서버를 제공하며, OpenSSL 3.5 QUIC 엔진 위에서 동작해요.
sgcQUIC는 부분적인 구현이 아니에요. 전송, 프레이밍, 헤더 압축, WebTransport 확장까지 모두 다루며, 네이티브 OpenSSL 3.5 QUIC 엔진 위에서 동작해요.
직접 프레이밍을 다루는 순수 전송에는 TsgcQUICClient와 TsgcQUICServer를, 와이어 포맷이 HTTP라면 곧바로 TsgcHTTP3Client와 TsgcHTTP3Server를 사용하세요.
TsgcQUICClient와 TsgcQUICServer는 순수 QUIC를 다뤄요. 암호화된 연결 하나에 여러 개의 독립적인 스트림, 신뢰성 없는 데이터그램, 그리고 클라이언트의 IP 주소가 세션 도중 바뀌어도 유지되는 연결 마이그레이션을 제공해요.
TsgcHTTP3Client와 TsgcHTTP3Server는 그 위에 HTTP 시맨틱을 얹어요. QPACK으로 압축된 요청 및 응답 헤더, Alt-Svc 검색, 그리고 기존 HTTP/2 코드가 이미 사용하는 것과 동일한 메서드와 상태 코드를 제공해요.
이전에 연결한 적이 있는 클라이언트는 핸드셰이크가 끝나기도 전에, 바로 첫 번째 패킷에 첫 요청을 실어 보낼 수 있어요.
연결 ID가 IP 주소 대신 세션을 식별하므로, 휴대폰이 Wi-Fi에서 셀룰러로 옮겨가도 스트림은 계속 열려 있어요.
WebTransport를 지원하는 브라우저 클라이언트를 위해, Extended CONNECT 요청 하나로 양방향 스트림과 신뢰성 없는 데이터그램을 제공해요.
QUIC 및 HTTP/3 컴포넌트를 위한 단계별 가이드예요:
다른 sgcWebSockets HTTP 클라이언트와 똑같은 모양이에요. 속성을 설정하고, 이벤트를 처리하고, 메서드를 호출하면 돼요.
uses
sgcHTTP3_Client;
var
vClient: TsgcHTTP3Client;
begin
vClient := TsgcHTTP3Client.Create(nil);
vClient.Host := 'api.example.com';
vClient.Port := 443;
vClient.OnResponse :=
procedure(Sender: TObject; const AStatus: Integer; const ABody: string)
begin
Memo1.Lines.Add(Format('%d: %s', [AStatus, ABody]));
end;
vClient.OnAltSvc :=
procedure(Sender: TObject; const AAltSvc: string)
begin
Memo1.Lines.Add('Alt-Svc: ' + AAltSvc); // h3 advertised over HTTP/2
end;
vClient.Connect;
vClient.Get('/pets/42');
end;
uses
sgcQUIC_Client;
var
vQUIC: TsgcQUICClient;
begin
vQUIC := TsgcQUICClient.Create(nil);
vQUIC.Host := 'quic.example.com';
vQUIC.Port := 4433;
vQUIC.EnableMultiStream := True;
vQUIC.OnQUICConnect :=
procedure(Sender: TObject)
var
vStreamId: Int64;
begin
vStreamId := vQUIC.OpenStream;
vQUIC.WriteData(vStreamId, 'ping');
end;
vQUIC.OnQUICStreamData :=
procedure(Sender: TObject; const AStreamId: Int64; const AData: string)
begin
Memo1.Lines.Add(Format('stream %d: %s', [AStreamId, AData]));
end;
vQUIC.Active := True;
end;
클라이언트와 서버는 양쪽에서 동일한 연결, 스트림, 데이터그램 모델을 공유해요. 전체 기능 매트릭스 보기 →
TsgcHTTP3Server는 UDP 포트에서 QUIC 위로 HTTP/3를 구사하고, 기존 HTTP/2 서버와 TsgcHTTP3ServerBridge 방식으로 짝을 지으면 레거시 클라이언트는 TCP로 계속 동작해요. Alt-Svc를 알리면 최신 클라이언트가 스스로 업그레이드해요.
uses
sgcHTTP3_Server;
procedure TForm1.FormCreate(Sender: TObject);
begin
FServer := TsgcHTTP3Server.Create(nil);
FServer.Port := 443;
FServer.QUICOptions.SSLOptions.CertFile := 'server.crt';
FServer.QUICOptions.SSLOptions.KeyFile := 'server.key';
// One handler for every incoming HTTP/3 request
FServer.OnH3Request :=
procedure(const Ctx: TsgcHTTP3Context)
begin
if Ctx.Path = '/pets/42' then
Ctx.RespondJSON(200, '{"name":"Rex"}')
else
Ctx.Respond(404, 'Not found');
end;
FServer.Active := True;
end;
QUIC를 종료하고, h3를 협상하고, 모든 요청을 핸들러 하나로 라우팅하는 Delphi 컴포넌트 하나예요. 기존 HTTP/2 서버가 이미 불러온 것과 동일한 인증서를 사용해요.
일반 HTTP/2 응답이 Alt-Svc: h3=":443" 헤더를 실어 보내요. 이를 이해하는 클라이언트는 리다이렉트나 별도 도메인 없이 다음 요청에서 QUIC를 열어요.
Extended CONNECT 요청이 스트림을 WebTransport로 업그레이드해서, 일반 HTTP/3 요청과 나란히 브라우저 클라이언트에 양방향 스트림과 데이터그램을 제공해요.
QUIC와 TLS 1.3 핸드셰이크는 OpenSSL 3.5 자체의 QUIC 엔진 위에서 실행돼요. 따로 빌드하거나 벤더링할 QUIC 라이브러리가 없어요.
sgcQUIC는 sgcWebSockets Enterprise의 애드온이에요. 그래서 라이선스도, 지원 채널도, 업데이트 주기도 이미 갖고 있는 것을 그대로 사용해요.
sgcQUIC는 Delphi, C++ Builder, .NET을 위한 아홉 개의 eSeGeCe 컴포넌트 라이브러리 중 하나예요. 같은 규칙을 공유하고, 전체 소스와 함께 제공되며, 로열티 없이 배포할 수 있어요.
원시 QUIC 전송과 HTTP/3 클라이언트 및 서버, 그리고 WebTransport를 제공해요. sgcWebSockets Enterprise의 애드온이에요.
자세히 알아보기 →WebSocket, HTTP/2, MQTT, AMQP, WebRTC, AI 및 30개 이상의 API 통합을 제공해요. sgcQUIC가 기반으로 삼는 Enterprise 라이선스예요.
자세히 알아보기 →Delphi와 C++ Builder를 위한 AI, LLM, MCP 컴포넌트예요. 컴포넌트 하나로 일곱 개 LLM 제공업체를 사용하고, MCP와 임베딩, 음성까지 지원해요. 단독 제품이며 sgcWebSockets Core 런타임이 함께 제공돼요.
자세히 알아보기 →Delphi와 C++ Builder를 위한 MQTT, AMQP 0.9.1과 1.0, Apache Kafka, STOMP 클라이언트 컴포넌트예요. 단독 제품이며 sgcWebSockets Core 런타임이 함께 제공돼요.
자세히 알아보기 →Delphi와 C++ Builder를 위한 OAuth2 클라이언트, JWT 클라이언트, WebAuthn을 제공해요. 모든 OAuth2/OIDC 공급자로 로그인하고, JWT를 발급 및 검증하고, 네이티브 앱에 패스키 인증을 추가할 수 있어요. 단독 제품이며 sgcWebSockets Core 런타임이 함께 제공돼요.
자세히 알아보기 →Delphi와 C++ Builder를 위한 HTTP/2 클라이언트, gRPC 클라이언트, 그리고 Google Cloud Pub/Sub, Calendar, FCM 클라이언트를 제공해요. 단독 제품이며 sgcWebSockets Core 런타임이 함께 제공돼요.
자세히 알아보기 →Delphi와 C++ Builder를 위한 REST 서버, OpenAPI 서버, OpenAPI 클라이언트 컴포넌트를 제공해요. OpenAPI 3.x 계약으로 REST API를 게시하거나, OpenAPI로 설명된 모든 API를 사용할 수 있어요. 단독 제품이며 sgcWebSockets Core 런타임이 함께 제공돼요.
자세히 알아보기 →OpenAPI 3.x 파서, 네이티브 Pascal SDK 생성기, OpenAPI 서버 컴포넌트, 그리고 1,195개 이상의 사전 빌드 클라우드 SDK를 제공해요.
자세히 알아보기 →문서에는 XAdES, PAdES, CAdES, ASiC를, 코드에는 Authenticode, ClickOnce, NuGet, VSIX를 제공해요.
자세히 알아보기 →Delphi와 C++ Builder를 위한 Windows Hello, 지문 센서, Windows Biometric Framework를 제공해요.
자세히 알아보기 →전 세계의 Delphi, C++ Builder, Lazarus 및 .NET 개발자가 신뢰해요.
sgcWebSockets 라이브러리는 정말 유용하고 설정하기 쉬워요. 앞으로도 좋은 작업 부탁드려요!
sgcWebSockets는 정말 훌륭하고 지원도 최고예요!
도움과 지원에 정말 감사드려요. 컴포넌트가 너무 마음에 들어요.