TURN 클라이언트

Delphi/C++Builder에서 TURN 서버와 통신해요. 중계 전송 주소를 할당하고, 권한과 채널을 관리한 뒤 symmetric NAT 뒤에 있는 피어와 데이터를 주고받아요 — RFC 8656 준수예요.

TsgcTURNClient

TURN 클라이언트 — Allocate, CreatePermission, ChannelBind, Send / Indication / Data, Refresh를 RFC 8656에 따른 장기 자격 증명으로 모두 서명해요.

컴포넌트 클래스

TsgcTURNClient

프로토콜

TURN (RFC 8656)

플랫폼

Windows, macOS, Linux, iOS, Android

에디션

Professional / Enterprise

할당, 권한 부여, 전송

TURN 서버 / 사용자명 / 비밀번호를 설정하고 Allocate를 호출한 뒤, 각 피어에 대해 CreatePermission을 호출하고 Send / SendIndication으로 데이터를 중계하세요.

uses
  sgcP2P;

var
  TURN: TsgcTURNClient;
begin
  TURN := TsgcTURNClient.Create(nil);
  TURN.Host := 'turn.example.com';
  TURN.Port := 3478;
  TURN.Authentication.UserName := 'alice';
  TURN.Authentication.Password := 'secret';

  TURN.OnTURNAllocated := procedure(Sender: TObject;
    const aRelayedAddress, aRelayedPort: string)
  begin
    Memo1.Lines.Add('relay: ' + aRelayedAddress + ':' + aRelayedPort);
    TURN.CreatePermission('192.0.2.1');
    TURN.SendIndication('192.0.2.1', 5000, 'hello via TURN');
  end;

  TURN.Allocate;
end;
// uses: sgcP2P
TsgcTURNClient *TURN = new TsgcTURNClient(this);
TURN->Host = "turn.example.com";
TURN->Port = 3478;
TURN->Authentication->UserName = "alice";
TURN->Authentication->Password = "secret";
TURN->Allocate();

내부 구성

타입이 지정된 RFC 8656 TURN 클라이언트 — STUN만으로는 NAT 통과가 실패할 때 WebRTC의 중계 계층 역할을 해요.

Allocate / Refresh

Allocate는 REQUESTED-TRANSPORT(UDP, TCP)와 함께 Allocate 요청을 보내 중계 전송 주소를 얻어요. Refresh는 수명을 연장하고, Free는 명시적으로 할당을 해제해요.

CreatePermission

CreatePermission(peerIp)는 중계가 데이터그램을 전달할 피어를 등록해요. 권한은 5분 후에 자동으로 만료되므로, 필요에 따라 갱신해 주세요.

ChannelBind

ChannelBind(channelNumber, peerEndpoint)는 36바이트 Send/Data 오버헤드를 우회해요. 컴포넌트가 4바이트 ChannelData 헤더를 자동으로 인코딩해요.

장기 자격 증명

Authentication.UserName / Password는 401 챌린지에서 추출한 realm과 nonce를 사용해 MESSAGE-INTEGRITY를 채워요.

TURN over TCP/TLS

UDP가 차단된 환경에서는 하위 클라이언트의 Transport를 TCP 또는 TLS로 설정하세요 — RFC 6062 / 6056 전송 선택지를 지원해요.

WebRTC 즉시 사용 가능

TsgcRTCPeerConnectionTsgcTURNClient를 IceServers 중 하나로 사용해요 — Allocate, CreatePermission, ChannelBind 과정이 투명하게 처리돼요.

명세 및 참고 자료

이 컴포넌트가 구현하는 프로토콜의 공인 출처예요.

문서 및 데모

컴포넌트 레퍼런스로 바로 이동하고, 바로 실행할 수 있는 데모 프로젝트를 받아보고, 체험판을 다운로드하세요.

온라인 도움말 — TsgcTURNClient 이 컴포넌트의 전체 속성, 메서드, 이벤트 레퍼런스예요.
데모 프로젝트 — Demos\35.P2P\03.TURN 바로 실행할 수 있는 예제 프로젝트예요. sgcWebSockets 패키지에 포함되어 있으니 아래에서 체험판을 다운로드해 보세요.
기술 문서 (PDF) 이 컴포넌트의 기능, 빠른 시작, Delphi 및 C++ Builder 코드 샘플, 출처 참고 자료예요.
사용자 설명서 (PDF) 라이브러리의 모든 컴포넌트를 다루는 종합 설명서예요.

Delphi에서 TURN을 사용할 준비가 되셨나요?

무료 체험판을 다운로드하고 Delphi 애플리케이션에 TURN 기반 중계를 추가해 보세요.