Delphi UDP クライアント

Delphi / C++Builder から UDP データグラムを送受信できます。IPv4 と IPv6、オプションの DTLS セッションと SOCKS5 経路に対応し、STUN、TURN、ICE、WebRTC のスタック全体の基盤となるトランスポートです。

TsgcUDPClient

高性能な UDP データグラムクライアントです。STUN、TURN、ICE、RTCPeerConnection、そして独自に実装するあらゆる UDP プロトコルの基盤となります。

コンポーネントクラス

TsgcUDPClient

プロトコル

UDP (RFC 768)

プラットフォーム

Windows, macOS, Linux, iOS, Android

エディション

Core / Standard / Professional / Enterprise

コンポーネントを配置するだけでパケット送信が可能

Host / Port を設定して Active := True にし、送信したいテキストまたはバイト列を指定して WriteData を呼び出すだけです。受信したデータグラムは OnUDPRead に到達します。

uses
  sgcP2P, sgcUDP_Classes, sgcSocket_Classes;

// TFormUDP は FClient: TsgcUDPClient と FIncoming: TStringList を保持します

procedure TFormUDP.CreateClient;
begin
  FClient := TsgcUDPClient.Create(nil);
  FClient.Host := '127.0.0.1';
  FClient.Port := 4000;

  FClient.OnUDPRead := OnUDPRead;

  FClient.Active := True;
  FClient.WriteData('hello over UDP');
end;

procedure TFormUDP.OnUDPRead(Sender: TObject; Socket: TsgcUDPSocket;
  Bytes: TsgcBytes);
var
  oStream: TStringStream;
begin
  // 読み取りスレッドで発生します。コントロールを操作する前にマーシャリングしてください
  oStream := TStringStream.Create('');
  try
    oStream.Write(Bytes[0], Length(Bytes));
    FIncoming.Add(oStream.DataString);
  finally
    oStream.Free;
  end;
end;
// includes: sgcP2P.hpp, sgcUDP_Classes.hpp, sgcSocket_Classes.hpp
TsgcUDPClient *Client = new TsgcUDPClient(this);
Client->Host = "127.0.0.1";
Client->Port = 4000;
Client->OnUDPRead = OnUDPRead;

Client->Active = true;
Client->WriteData("hello over UDP");

void __fastcall TFormUDP::OnUDPRead(TObject *Sender,
  TsgcUDPSocket *Socket, TsgcBytes Bytes)
{
  // 読み取りスレッドで発生します。コントロールを操作する前にマーシャリングしてください
}

主な機能

薄く予測可能な UDP ソケット層です。STUN / TURN / ICE / WebRTC や任意のカスタムデータグラムプロトコルのトランスポートとして利用されます。

ユニキャスト送受信

WriteData(text) および WriteData(bytes) は、Host / Port 宛のデータグラムをキューに追加します。アドレスを受け取るオーバーロードを使えば、任意の宛先へ送信できます。OnUDPRead は、受信したパケットを、それが到着したソケットとともに通知します。

DTLS

DTLS := True を設定して DTLSOptions を構成すると、データグラムを DTLS セッション内で送受信できます。OnDTLSVerifyPeer ではピア証明書が渡されるため、受け入れるかどうかを判断できます。

SOCKS5 プロキシ

Proxy を設定すると、SOCKS5 の UDP ASSOCIATE 経由でデータグラムを転送します。UDP の経路を定義しているのは SOCKS5 だけであるため、HTTP プロキシは EsgcUDPProxyNotSupported で拒否されます。

受信に使うソケット

OnUDPRead では常に TsgcUDPSocket が渡されます。IPPort は送信元を示し、LocalIPLocalPort は、後に ICE が host 候補として公開するローカルのベースを示します。

IPv4 / IPv6

IPVersion は基底のソケットへそのまま渡されます。IPv6 の経路が必要な場合は Id_IPv6 を指定してください。

P2P スタックで利用

上位の P2P コンポーネント (TsgcSTUNClientTsgcTURNClientTsgcICEClientTsgcRTCPeerConnection) はすべて、本クライアントを内部 UDP トランスポートとして利用しています。

仕様と参考資料

このコンポーネントが実装するプロトコルの一次資料です。

ドキュメントとデモ

コンポーネントリファレンスへのディープリンク、すぐに実行可能なデモプロジェクト、そして体験版のダウンロードはこちらです。

オンラインヘルプ — TsgcUDPClient 本コンポーネントのプロパティ、メソッド、イベントの完全なリファレンスです。
デモプロジェクト — Demos\35.P2P\01.UDP_Server_Client すぐに実行可能なサンプルプロジェクトです。sgcWebSockets パッケージに同梱されています。下記より体験版をダウンロードしてください。
技術ドキュメント (PDF) 本コンポーネントのみを対象とした機能解説、クイックスタート、Delphi および C++ Builder のコードサンプル、一次資料への参照を収録しています。
ユーザーマニュアル (PDF) ライブラリ内のすべてのコンポーネントを網羅した総合マニュアルです。
最もお得な選択: All-AccesseSeGeCe の全製品にプレミアムサポートが付いて、年間 €1,059 からご利用いただけます。
All-Access の価格を見る

Delphi から UDP を送信しませんか?

体験版をダウンロードして、Delphi アプリケーションに UDP データグラムのサポートを追加しましょう。