一個小型庫,可將本機網路發現功能新增至您的 C++ 程式中,無需任何依賴項
使用者
如何建造
如何使用
範例程式
發現工具
udp-discovery-cpp庫使用者清單請參考USERS.md文件。
該庫使用 CMake 建立靜態庫、範例和工具。若要建置所有目標,請執行以下操作:
cd udp-發現-cpp mkdir 構建 光碟建構 cmake -DBUILD_EXAMPLE=ON -DBUILD_TOOL=ON .. 製作
也可以只將實作檔案新增到專案中並使用該專案的建置系統:
udp_discovery_peer.cpp udp_discovery_ip_port.cpp udp_discovery_protocol.cpp
該庫沒有依賴項。
範例程式udp-discovery-example可以作為如何使用該函式庫的一個很好的參考。它使用 12021 作為端口,7681412 作為應用程式 ID,這些值由udp-discovery-cpp庫的使用者決定。
若要啟動發現對等點,使用者應先建立udpdiscovery::PeerParameters物件並填入參數:
udpdiscovery::PeerParametersparameters;// 設定用於接收和傳送發現封包的連接埠。 (kApplicationId);// 該對等點可以發現其他對等點。其他參數(超時、對等點比較) mode) 以滿足他們的需求。
然後建立一個udpdiscovery::Peer物件並開始發現,提供與該對等點關聯的使用者資料:
udpdiscovery::對等點; peer.Start(參數, user_data);
用戶資料將被傳輸並被其他節點發現。用戶資料可以由用戶應用程式使用,以儲存應用程式想要在對等點之間共享的一些有意義的數據。
建立並啟動的udpdiscovery::Peer物件可用於列出目前發現的對等點:
std::list<udpdiscovery::DiscoveredPeer> new_discovered_peers = peer.ListDiscovered();
有兩種方法可以比較已發現的對等點並將它們視為相等:
kSamePeerIp - 僅比較收到的發現資料包的 ip 部分,因此從同一 ip 發送資料包的應用程式的多個實例將被視為一個對等點。
kSamePeerIpAndPort - 預設值,比較接收到的發現資料包的 ip 和端口,因此從同一 ip 發送資料包的應用程式的多個實例將被視為不同的對等點。
使用者可以使用udpdiscovery::Same函數來比較兩個發現的對等點列表,以決定發現的對等點列表是否相同或出現新的對等點或某些對等點消失:
bool is_same = udpdiscovery::相同(parameters.same_peer_mode(),discovered_peers,new_discovered_peers);
該函式庫的 CMake 建置會產生靜態函式庫、範例程式udp-discovery-example和用於發現本機對等點udp-discovery-tool 的工具。
範例程式udp-discovery-example具有以下參數:
用法: ./udp-discovery-example {廣播|多播|兩者} {發現|可發現|兩者} [使用者資料] 廣播 - 該實例將使用廣播來被其他人發現 多播 - 此實例將使用多播群組 (224.0.0.123) 進行發現 兩者 - 此實例將使用廣播和多播群組 (224.0.0.123) 進行發現 發現 - 該實例將只能發現其他實例 可發現 - 該實例只能被其他實例發現 兩者 - 該實例將能夠發現其他實例並被其他實例發現 user_data - 廣播時傳送的字串,顯示在對等方 IP 旁邊
當範例程式在可發現模式下運作時,它會進入 CLI 模式等待使用者命令:
> 幫助 命令是:幫助、用戶資料、退出
user_data指令變更與此對等方關聯的使用者資料。 exit指令優雅地退出udp-discovery-example發送kPacketIAmOutOfHere封包。
發現工具udp-discovery-tool具有以下參數:
用法:./udp-discovery-tool application_id 端口 application_id - 要發現的應用程式的整數 ID port - 應用程式使用的端口