UDP サーバー
指定したポートで UDP データグラムを待ち受け、各データグラムをアプリケーションに振り分けます。TsgcSTUNServer や TsgcTURNServer を支えるのと同じエンジンです。
指定したポートで UDP データグラムを待ち受け、各データグラムをアプリケーションに振り分けます。TsgcSTUNServer や TsgcTURNServer を支えるのと同じエンジンです。
高性能な UDP リスナーです。ポートにバインドして任意のピアからデータグラムを受信し、特定のエンドポイントへ応答し、ワーカースレッドにより複数コアでスケールします。
TsgcUDPServer
Windows, macOS, Linux, iOS, Android
Professional / Enterprise
Port を設定し Active := True にすれば、OnMessage で受信したデータグラムを処理し、Connection.WriteData で応答できます。1 つのソケットで任意の数のリモートピアに対応します。
uses
sgcP2P;
var
Server: TsgcUDPServer;
begin
Server := TsgcUDPServer.Create(nil);
Server.Port := 4000;
Server.OnMessage := procedure(Connection: TsgcUDPConnection;
const aText: string)
begin
// echo back to the originating peer
Connection.WriteData('echo: ' + aText);
end;
Server.Active := True;
end;
// uses: sgcP2P
TsgcUDPServer *Server = new TsgcUDPServer(this);
Server->Port = 4000;
Server->Active = true;
マルチスレッド対応の UDP リスナーで、各データグラムをワーカープールに振り分け、応答パスとして TsgcUDPConnection を提供します。
バインドされた 1 つのソケットで、任意の数のリモートエンドポイントからのデータグラムを処理します。OnMessage ごとに、送信元の PeerIP / PeerPort を識別する TsgcUDPConnection が渡されます。
Connection.WriteData は、同じソケットを使用して送信元のピアにデータグラムを送り返します。追加の送信側バインディングは不要です。
受信パケットはワーカープールで処理されます。ハンドラーの処理が重い場合は WorkerCount で調整してください。受信スレッドがブロックされることはありません。
IPVersion によって、IPv4 専用、IPv6 専用、デュアルスタックのいずれかのバインディングに対応します。マルチキャストグループへの参加は JoinMulticastGroup から利用できます。
RFC 8489 / 8656 を完全実装した STUN および TURN サーバーは、本コンポーネントの上に構築されています。同様の方法で任意のカスタム UDP プロトコルを実装できます。
送信時に DontFragment := True を設定できます。カスタムプロトコルでの経路 MTU 探索に有用です。
コンポーネントリファレンスへのディープリンク、すぐに実行可能なデモプロジェクト、そして体験版のダウンロードはこちらです。
| オンラインヘルプ — TsgcUDPServer 本コンポーネントのプロパティ、メソッド、イベントの完全なリファレンスです。 | 開く | |
| デモプロジェクト — Demos\35.P2P\01.UDP_Server_Client すぐに実行可能なサンプルプロジェクトです。sgcWebSockets パッケージに同梱されています。下記より体験版をダウンロードしてください。 | 開く | |
| 技術ドキュメント (PDF) 本コンポーネントのみを対象とした機能解説、クイックスタート、Delphi および C++ Builder のコードサンプル、一次資料への参照を収録しています。 | 開く | |
| ユーザーマニュアル (PDF) ライブラリ内のすべてのコンポーネントを網羅した総合マニュアルです。 | 開く |