Delphi UDP サーバー

指定したポートで UDP データグラムを待ち受け、各データグラムをアプリケーションに振り分けます。TsgcSTUNServer や TsgcTURNServer を支えるのと同じエンジンです。

TsgcUDPServer

高性能な UDP リスナーです — ポートにバインドし、任意のピアからデータグラムを受信し、特定のエンドポイントへ応答します。そのすべてを 1 つのバインドされたソケットで行います。

コンポーネントクラス

TsgcUDPServer

プロトコル

UDP (RFC 768)

プラットフォーム

Windows, macOS, Linux, iOS, Android

エディション

Professional / Enterprise

配置して待ち受け、応答するだけ

Port を設定して Active := True にすれば、OnUDPRead で受信データグラムを処理し、Socket.WriteData で応答できます — 1 つのソケットで、任意の数のリモートピアに対応します。

uses
  sgcP2P, sgcUDP_Classes, sgcSocket_Classes;

// TFormUDPServer は FServer: TsgcUDPServer とハンドラーを保持します

procedure TFormUDPServer.StartServer;
begin
  FServer := TsgcUDPServer.Create(nil);
  FServer.Port := 4000;

  FServer.OnUDPRead := OnUDPRead;

  FServer.Active := True;
end;

procedure TFormUDPServer.OnUDPRead(Sender: TObject;
  Socket: TsgcUDPSocket; Bytes: TsgcBytes);
begin
  // データグラムの送信元ピアへエコーバックします
  Socket.WriteData(TBytes(Bytes));
end;
// includes: sgcP2P.hpp, sgcUDP_Classes.hpp, sgcSocket_Classes.hpp
TsgcUDPServer *Server = new TsgcUDPServer(this);
Server->Port = 4000;
Server->OnUDPRead = OnUDPRead;
Server->Active = true;

void __fastcall TFormUDPServer::OnUDPRead(TObject *Sender,
  TsgcUDPSocket *Socket, TsgcBytes Bytes)
{
  // データグラムの送信元ピアへエコーバックします
  Socket->WriteData(TBytes(Bytes));
}

主な機能

各データグラムを、それが到着した TsgcUDPSocket とともにハンドラーへ渡す UDP リスナーです。そのソケットが応答パスにもなります。

1 ポートで多数のピアに対応

バインドされた 1 つのソケットで、任意の数のリモートエンドポイントからのデータグラムを処理します。OnUDPRead は、送信元を識別する IPPort を持つ TsgcUDPSocket とともに発生します。

応答パス

Socket.WriteData は、同じソケットを使用して送信元のピアへデータグラムを返します。サーバーには、それ以外のエンドポイント宛の WriteData(ip, port, ...) も用意されています。

WatchDog

WatchDog は、リスナーが応答しなくなったときに再起動します。OnBeforeWatchDog では、その再起動を拒否できます。OnStartupOnShutdown は、各バインドの前後で発生します。

IPv4 / IPv6 と複数のバインディング

アドレスファミリは IPVersion で指定します。サーバーが複数のアドレスで待ち受ける必要がある場合は、AddBindingRemoveBindingGetBinding を使って Bindings にアドレスごとのエントリを追加してください。

TsgcSTUNServer / TsgcTURNServer の基盤

RFC 8489 / 8656 を完全実装した STUN および TURN サーバーは、本コンポーネントの上に構築されています。同様の方法で任意のカスタム UDP プロトコルを実装できます。

DTLS

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

仕様と参考資料

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

ドキュメントとデモ

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

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

UDP サーバーを動かしませんか?

体験版をダウンロードして、Delphi で UDP データグラムを待ち受けましょう。