Eine kleine Bibliothek zum Hinzufügen einer lokalen Netzwerkerkennungsfunktion zu Ihren C++-Programmen ohne Abhängigkeiten
Benutzer
Wie baut man
Wie zu verwenden
Beispielprogramm
Discovery-Tool
Die Liste der Benutzer der UDP-Discovery-CPP- Bibliothek finden Sie im Dokument USERS.md.
Diese Bibliothek verwendet CMake, um statische Bibliotheken, Beispiele und Tools zu erstellen. Um alle Ziele zu erstellen, gehen Sie wie folgt vor:
cd udp-discovery-cpp mkdir-Build CD-Build cmake -DBUILD_EXAMPLE=ON -DBUILD_TOOL=ON .. machen
Es ist auch möglich, einfach Implementierungsdateien zu einem Projekt hinzuzufügen und das Build-System dieses Projekts zu verwenden:
udp_discovery_peer.cpp udp_discovery_ip_port.cpp udp_discovery_protocol.cpp
Diese Bibliothek hat keine Abhängigkeiten.
Das Beispielprogramm udp-discovery-example kann eine sehr gute Referenz zur Verwendung dieser Bibliothek sein. Es verwendet 12021 als Port und 7681412 als Anwendungs-ID. Diese Werte sollten Benutzer der UDP-Discovery-CPP -Bibliothek festlegen.
Um den Discovery-Peer zu starten, sollten die Benutzer zunächst das Objekt udpdiscovery::PeerParameters erstellen und die Parameter eingeben:
udpdiscovery::PeerParametersparameter;// Legt den Port fest, der zum Empfangen und Senden von Erkennungspaketen verwendet wird.parameters.set_port(kPort);// Legt die Anwendungs-ID fest, nur Peers mit derselben Anwendungs-ID können entdeckt werden.parameters.set_application_id (kApplicationId);// Dieser Peer kann andere Peers erkennen.parameters.set_can_discover(true);// Dieser Peer kann von anderen erkannt werden peers.parameters.set_can_be_discovered(true);// Benutzer können andere Parameter (Timeouts, Peer-Vergleichsmodus) an ihre Bedürfnisse anpassen.// Bitte beachten Sie die Datei udp_discovery_peer_parameters.hpp.
Erstellen Sie dann ein udpdiscovery::Peer- Objekt und starten Sie die Erkennung, indem Sie Benutzerdaten bereitstellen, die diesem Peer zugeordnet werden:
udpdiscovery::Peer peer; peer.Start(parameters, user_data);
Benutzerdaten werden übertragen und von anderen Peers entdeckt. Benutzerdaten können von Benutzer zu Benutzeranwendung gespeichert werden, um einige aussagekräftige Daten zu speichern, die die Anwendung zwischen Peers teilen möchte.
Das erstellte und gestartete udpdiscovery::Peer- Objekt kann verwendet werden, um aktuell erkannte Peers aufzulisten:
std::list<udpdiscovery::DiscoveredPeer> new_discovered_peers = peer.ListDiscovered();
Es gibt zwei Möglichkeiten, entdeckte Peers zu vergleichen und als gleichwertig zu betrachten:
kSamePeerIp – vergleicht nur den IP-Teil des empfangenen Erkennungspakets, sodass mehrere Anwendungsinstanzen, die Pakete von derselben IP senden, als ein Peer betrachtet werden.
kSamePeerIpAndPort – der Standardwert, vergleicht sowohl die IP als auch den Port des empfangenen Erkennungspakets, sodass mehrere Anwendungsinstanzen, die Pakete von derselben IP senden, als unterschiedliche Peers betrachtet werden.
Benutzer können die Funktion udpdiscovery::Same verwenden, um zwei Listen erkannter Peers zu vergleichen und zu entscheiden, ob die Liste der erkannten Peers dieselbe ist oder neue Peers erscheinen oder einige Peers verschwinden:
bool is_same = udpdiscovery::Same(parameters.same_peer_mode(), discovered_peers, new_discovered_peers);
Der CMake-Build dieser Bibliothek erzeugt eine statische Bibliothek, das Beispielprogramm udp-discovery-example und ein Tool zum Erkennen lokaler Peers udp-discovery-tool .
Das Beispielprogramm udp-discovery-example hat folgende Argumente:
Verwendung: ./udp-discovery-example {broadcast|multicast|both} {discover|discoverable|both} [user_data] Broadcast – Diese Instanz nutzt Broadcasting, um von anderen entdeckt zu werden Multicast – diese Instanz verwendet die Multicast-Gruppe (224.0.0.123) für die Erkennung Both – Diese Instanz verwendet sowohl die Broadcasting- als auch die Multicast-Gruppe (224.0.0.123) für die Erkennung Entdecken – Diese Instanz kann nur andere Instanzen erkennen erkennbar – diese Instanz kann nur von anderen Instanzen entdeckt werden beides – diese Instanz wird in der Lage sein, andere Instanzen zu entdecken und von ihnen entdeckt zu werden user_data – die beim Senden gesendete Zeichenfolge, die neben der IP des Peers angezeigt wird
Wenn das Beispielprogramm im erkennbaren Modus ausgeführt wird, wechselt es in den CLI-Modus und wartet auf Benutzerbefehle:
> Hilfe Befehle sind: help, user_data, exit
Der Befehl user_data ändert die mit diesem Peer verknüpften Benutzerdaten. Der Exit -Befehl beendet das udp-discovery-example und sendet ordnungsgemäß das kPacketIAmOutOfHere -Paket.
Das Discovery-Tool udp-discovery-tool hat die folgenden Argumente:
Verwendung: ./udp-discovery-tool application_id-Port application_id – ganzzahlige ID der zu erkennenden Anwendung Port – von der Anwendung verwendeter Port