依存関係を持たずにローカル ネットワーク検出機能を C++ プログラムに追加するための小さなライブラリ
ユーザー
構築方法
使用方法
サンプルプログラム
ディスカバリーツール
udp-discovery-cppライブラリ ユーザーのリストについては、USERS.md ドキュメントを参照してください。
このライブラリは CMake を使用して静的ライブラリ、サンプル、ツールを構築します。すべてのターゲットをビルドするには、次の手順を実行します。
cd udp-ディスカバリー-cpp mkdir ビルド CD ビルド cmake -DBUILD_EXAMPLE=ON -DBUILD_TOOL=ON .. 作る
また、実装ファイルをプロジェクトに追加するだけで、そのプロジェクトのビルド システムを使用することもできます。
udp_discovery_peer.cpp udp_discovery_ip_port.cpp udp_discovery_protocol.cpp
このライブラリには依存関係はありません。
サンプル プログラムudp-discovery-exampleは、このライブラリの使用方法についての非常に良い参考資料となります。ポートとして 12021、アプリケーション ID として 7681412 を使用します。これらの値は、 udp-discovery-cppライブラリのユーザーが決定する必要があります。
検出ピアを開始するには、ユーザーはまずudpdiscovery::PeerParametersオブジェクトを作成し、パラメーターを入力する必要があります。
udpdiscovery::PeerParametersparameters;// 検出パケットの送受信に使用されるポートを設定します。parameters.set_port(kPort);// アプリケーション ID を設定します。同じアプリケーション ID を持つピアのみを検出できます。parameters.set_application_id (kApplicationId);// このピアは他のピアを検出できます。parameters.set_can_discover(true);// このピアは他のピアによって検出できますPeers.parameters.set_can_be_discovered(true);// ユーザーはニーズに合わせて他のパラメータ (タイムアウト、ピア比較モード) を調整できます。// udp_discovery_peer_parameters.hpp ファイルを参照してください。
次に、 udpdiscovery::Peerオブジェクトを作成し、このピアに関連付けられるユーザー データを提供する検出を開始します。
udpdiscovery::ピアピア; ピア.Start(パラメータ, user_data);
ユーザー データは転送され、他のピアによって検出されます。ユーザー データは、ユーザー アプリケーションごとに、アプリケーションがピア間で共有したい意味のあるデータを保存できます。
作成および開始されたudpdiscovery::Peerオブジェクトを使用して、現在検出されているピアを一覧表示できます。
std::list<udpdiscovery::DiscoveredPeer> new_discovered_peers =peer.ListDiscovered();
検出されたピアを比較し、それらを等しいとみなすには 2 つのオプションがあります。
kSamePeerIp - 受信した検出パケットの IP 部分のみを比較するため、同じ IP からパケットを送信するアプリケーションの複数のインスタンスが 1 つのピアと見なされます。
kSamePeerIpAndPort - デフォルト値は、受信した検出パケットの IP とポートの両方を比較するため、同じ IP からパケットを送信するアプリケーションの複数のインスタンスは異なるピアと見なされます。
ユーザーは、 udpdiscovery::Same関数を使用して、検出されたピアの 2 つのリストを比較し、検出されたピアのリストが同じであるか、新しいピアが出現するか、一部のピアが消滅するかを判断できます。
bool is_same = udpdiscovery::Same(parameters.same_peer_mode(), Discovered_peers, new_discovered_peers);
このライブラリの CMake ビルドは、静的ライブラリ、サンプル プログラムudp-discovery-exampleおよびローカル ピアを検出するツールudp-discovery-toolを生成します。
サンプル プログラムudp-discovery-exampleには次の引数があります。
使用法: ./udp-discovery-example {broadcast|multicast|both} {discover|discoverable|both} [user_data] ブロードキャスト - このインスタンスは他の人に発見されるためにブロードキャストを使用します。 マルチキャスト - このインスタンスは検出にマルチキャスト グループ (224.0.0.123) を使用します。 両方 - このインスタンスは、ディスカバリにブロードキャスト グループとマルチキャスト グループ (224.0.0.123) の両方を使用します。 Discover - このインスタンスには他のインスタンスのみを検出する機能があります。 Discoverable - このインスタンスは、他のインスタンスによってのみ検出される機能を持ちます。 両方 - このインスタンスは検出可能であり、他のインスタンスによって検出されることもできます。 user_data - ブロードキャスト時に送信される文字列。ピアの IP の隣に表示されます。
サンプル プログラムが検出可能モードで実行されると、CLI モードに入り、ユーザーのコマンドを待ちます。
> 助けて コマンドは次のとおりです: help、user_data、exit
user_dataコマンドは、このピアに関連付けられたユーザー データを変更します。 exitコマンドは、 kPacketIAmOutOfHereパケットを送信するudp-discovery-example を正常に終了します。
検出ツールudp-discovery-tool には次の引数があります。
使用法: ./udp-discovery-tool application_id ポート application_id - 検出するアプリケーションの整数 ID port - アプリケーションが使用するポート