Delphi TURN İstemcisi

Delphi/C++Builder üzerinden bir TURN sunucusuyla iletişim kurun. Aktarmalı taşıma adresleri ayırın, izinleri ve kanalları yönetin, ardından simetrik NAT arkasındaki eşlerle veri alışverişi yapın — RFC 8656 uyarınca.

TsgcTURNClient

TURN istemcisi — Allocate, CreatePermission, ChannelBind, Send / Indication / Data, Refresh; tümü RFC 8656 uyarınca uzun vadeli kimlik bilgileriyle imzalanır.

Bileşen sınıfı

TsgcTURNClient

Protokol

TURN (RFC 8656)

Platformlar

Windows, macOS, Linux, iOS, Android

Sürüm

Enterprise

Ayırın, izin verin, gönderin

TURN sunucusunu ayarlayın, kimlik bilgilerini TURNOptions.Authentication üzerine koyun, Allocate çağırın, ardından her eş için CreatePermission ve veriyi aktarmak için SendIndication kullanın.

uses
  sgcP2P, sgcP2P_STUN_Classes, sgcP2P_STUN_Types, sgcP2P_TURN_Classes,
  sgcSocket_Classes;

// TFormTURN, FClient: TsgcTURNClient ve FLog: TStringList tutar

procedure TFormTURN.StartAllocation;
begin
  FClient := TsgcTURNClient.Create(nil);
  FClient.Host := 'turn.example.com';
  FClient.Port := 3478;
  FClient.TURNOptions.Authentication.Credentials := stauLongTermCredential;
  FClient.TURNOptions.Authentication.Username := 'alice';
  FClient.TURNOptions.Authentication.Password := 'secret';

  FClient.OnTURNAllocate := OnTURNAllocate;

  FClient.Allocate;
end;

procedure TFormTURN.OnTURNAllocate(Sender: TObject;
  const aSocket: TsgcSocketConnection;
  const aMessage: TsgcSTUN_Message;
  const aAllocation: TsgcTURN_ResponseAllocation);
begin
  FLog.Add('relay: ' + aAllocation.RelayedIP + ':' +
    IntToStr(aAllocation.RelayedPort));

  // röle yalnızca izin verdiğiniz bir eş için iletir
  FClient.CreatePermission('192.0.2.1');
  FClient.SendIndication('192.0.2.1', 5000, 'hello via TURN');
end;
// includes: sgcP2P.hpp, sgcP2P_STUN_Types.hpp, sgcP2P_TURN_Classes.hpp
TsgcTURNClient *Client = new TsgcTURNClient(this);
Client->Host = "turn.example.com";
Client->Port = 3478;
Client->TURNOptions->Authentication->Credentials = stauLongTermCredential;
Client->TURNOptions->Authentication->Username = "alice";
Client->TURNOptions->Authentication->Password = "secret";
Client->OnTURNAllocate = OnTURNAllocate;
Client->Allocate();

İçinde neler var

Türü belirli bir RFC 8656 TURN istemcisi — yalnızca STUN ile NAT geçişi başarısız olduğunda WebRTC için aktarma katmanı.

Allocate / Refresh

Allocate, REQUESTED-TRANSPORT içeren Allocate isteğini gönderir ve aktarmalı bir taşıma adresi elde eder; bu adres OnTURNAllocate içinde aAllocation.RelayedIP ve RelayedPort olarak ulaşır. Refresh(lifetime) ömrü uzatır, Refresh(0) ise ayırmayı serbest bırakır.

CreatePermission

CreatePermission(peerIp), aktarmanın datagramlarını ileteceği bir eşi kaydeder. İzinler 5 dakika sonra otomatik olarak sona erer — gerektiğinde yenileyin.

ChannelBind

ChannelBind(peerIp, peerPort), 36 baytlık Send/Data ek yükünü atlar. Bileşen kanal numarasını seçer, 4 baytlık ChannelData başlığını kodlar ve bağlamayı OnTURNChannelBind üzerinde bildirir.

Uzun vadeli kimlik bilgileri

TURNOptions.Authentication.Username ve Password, 401 challenge yanıtından alınan realm ve nonce kullanılarak MESSAGE-INTEGRITY değerini doldurur. Credentials kısa veya uzun süreli olanı seçer.

TCP üzerinden TURN

Transport := stunTCP, UDP'yi engelleyen ağlar için denetim kanalını TCP'ye taşır; bu, RFC 6062 yoludur. TURNOptions.AutoRefresh ise ayırmayı, izinleri ve kanalları kendi başına canlı tutar.

WebRTC'ye hazır

TsgcICEClient bir TURN istemcisini TURNClient özelliği üzerinden yönetir, TsgcRTCPeerConnection ise RTCOptions.ICEServers içindeki turn: girdilerinden ayırma yapar. Allocate, CreatePermission ve ChannelBind sırası sizin yerinize gerçekleşir.

Spesifikasyonlar ve referanslar

Bu bileşenin uyguladığı protokol için yetkili kaynaklar.

Belgeler ve Demolar

Bileşen referansına doğrudan bağlanın, çalışmaya hazır demo projesini alın ve denemeyi indirin.

Çevrimiçi Yardım — TsgcTURNClient Bu bileşen için tam özellik, metot ve olay referansı.
Demo Projesi — Demos\35.P2P\03.TURN Çalışmaya hazır örnek proje. sgcWebSockets paketinin içinde gelir — denemeyi aşağıdan indirin.
Teknik Belge (PDF) Özellikler, hızlı başlangıç, Delphi ve C++ Builder için kod örnekleri ve birincil kaynak referansları — yalnızca bu bileşen.
Kullanıcı Kılavuzu (PDF) Kütüphanedeki her bileşeni kapsayan kapsamlı kılavuz.
En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

Delphi'den TURN Kullanmaya Hazır mısınız?

Ücretsiz denemeyi indirin ve Delphi uygulamalarınıza TURN tabanlı aktarma ekleyin.