Une petite bibliothèque pour ajouter une fonctionnalité de découverte de réseau local à vos programmes C++ sans dépendances
Utilisateurs
Comment construire
Comment utiliser
Exemple de programme
Outil de découverte
Pour la liste des utilisateurs de la bibliothèque udp-discovery-cpp, veuillez vous référer au document USERS.md.
Cette bibliothèque utilise CMake pour créer une bibliothèque statique, des exemples et des outils. Pour construire toutes les cibles, faites :
cd udp-découverte-cpp mkdir construire construction de CD cmake -DBUILD_EXAMPLE=ON -DBUILD_TOOL=ON .. faire
Il est également possible d'ajouter simplement des fichiers d'implémentation à un projet et d'utiliser le système de construction de ce projet :
udp_discovery_peer.cpp udp_discovery_ip_port.cpp udp_discovery_protocol.cpp
Cette bibliothèque n'a aucune dépendance.
L'exemple de programme udp-discovery-example peut être une très bonne référence sur la façon d'utiliser cette bibliothèque. Il utilise 12021 comme port et 7681412 comme identifiant d'application, ces valeurs que les utilisateurs de la bibliothèque udp-discovery-cpp doivent décider.
Pour démarrer l'homologue de découverte, les utilisateurs doivent d'abord créer l'objet udpdiscovery::PeerParameters et renseigner les paramètres :
udpdiscovery::PeerParameters settings;// Définit le port qui sera utilisé pour recevoir et envoyer des paquets de découverte.parameters.set_port(kPort);// Définit l'ID d'application, seuls les homologues avec le même ID d'application peuvent être découverts.parameters.set_application_id (kApplicationId);// Cet homologue peut découvrir d'autres pairs.parameters.set_can_discover(true);// Cet homologue peut être découvert par d'autres pairs. peers.parameters.set_can_be_discovered(true);// Les utilisateurs peuvent modifier d'autres paramètres (délai d'attente, mode de comparaison entre pairs) pour répondre à leurs besoins.// Veuillez vous référer au fichier udp_discovery_peer_parameters.hpp.
Créez ensuite un objet udpdiscovery::Peer et démarrez la découverte en fournissant les données utilisateur qui seront associées à cet homologue :
udpdiscovery : Peer peer ; peer.Start (paramètres, user_data);
Les données utilisateur seront transférées et seront découvertes par d'autres pairs. Les données utilisateur peuvent être utilisées par application utilisateur pour stocker certaines données significatives que l'application souhaite partager entre pairs.
L'objet udpdiscovery::Peer créé et démarré peut être utilisé pour répertorier les homologues actuellement découverts :
std::list<udpdiscovery::DiscoveredPeer> new_discovered_peers = peer.ListDiscovered();
Il existe deux options pour comparer les pairs découverts et les considérer comme égaux :
kSamePeerIp - compare uniquement la partie IP du paquet de découverte reçu, de sorte que plusieurs instances d'application envoyant des paquets à partir de la même adresse IP seront considérées comme un seul homologue.
kSamePeerIpAndPort - la valeur par défaut compare à la fois l'adresse IP et le port du paquet de découverte reçu, de sorte que plusieurs instances d'application envoyant des paquets à partir de la même adresse IP seront considérées comme des homologues différents.
Les utilisateurs peuvent utiliser la fonction udpdiscovery::Same pour comparer deux listes de pairs découverts afin de décider si la liste des pairs découverts est la même ou si de nouveaux pairs apparaissent ou si certains pairs disparaissent :
bool is_same = udpdiscovery::Same(parameters.same_peer_mode(), discover_peers, new_discovered_peers);
La construction CMake de cette bibliothèque produit une bibliothèque statique, un exemple de programme udp-discovery-example et un outil pour découvrir les pairs locaux udp-discovery-tool .
L'exemple de programme udp-discovery-example contient les arguments suivants :
Utilisation : ./udp-discovery-example {broadcast|multicast|both} {discover|discoverable|both} [user_data] diffusion - cette instance utilisera la diffusion pour être découverte par d'autres multidiffusion - cette instance utilisera le groupe de multidiffusion (224.0.0.123) pour la découverte les deux - cette instance utilisera à la fois le groupe de diffusion et le groupe de multidiffusion (224.0.0.123) pour la découverte découvrir - cette instance aura la capacité de découvrir uniquement d'autres instances découvrable - cette instance pourra être découverte uniquement par d'autres instances les deux - cette instance pourra découvrir et être découverte par d'autres instances user_data - la chaîne envoyée lors de la diffusion, affichée à côté de l'adresse IP du homologue
Lorsque l'exemple de programme est exécuté en mode détectable, il passe en mode CLI en attendant les commandes de l'utilisateur :
> aide les commandes sont : help, user_data, exit
La commande user_data modifie les données utilisateur associées à cet homologue. La commande exit quitte l' exemple udp-discovery en envoyant gracieusement le paquet kPacketIAmOutOfHere .
L'outil de découverte udp-discovery-tool a les arguments suivants :
Utilisation : port ./udp-discovery-tool application_id application_id - identifiant entier de l'application à découvrir port - port utilisé par l'application