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.
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.
TURN istemcisi — Allocate, CreatePermission, ChannelBind, Send / Indication / Data, Refresh; tümü RFC 8656 uyarınca uzun vadeli kimlik bilgileriyle imzalanır.
TsgcTURNClient
Windows, macOS, Linux, iOS, Android
Enterprise
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();
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, 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(peerIp), aktarmanın datagramlarını ileteceği bir eşi kaydeder. İzinler 5 dakika sonra otomatik olarak sona erer — gerektiğinde yenileyin.
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.
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.
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.
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.
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ı. | Aç | |
| Demo Projesi — Demos\35.P2P\03.TURN Çalışmaya hazır örnek proje. sgcWebSockets paketinin içinde gelir — denemeyi aşağıdan indirin. | Aç | |
| 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. | Aç | |
| Kullanıcı Kılavuzu (PDF) Kütüphanedeki her bileşeni kapsayan kapsamlı kılavuz. | Aç |