Una pequeña biblioteca para agregar la función de descubrimiento de redes locales a sus programas C++ sin dependencias
Usuarios
como construir
como usar
Programa de ejemplo
herramienta de descubrimiento
Para obtener la lista de usuarios de la biblioteca udp-discovery-cpp, consulte el documento USERS.md.
Esta biblioteca utiliza CMake para crear bibliotecas estáticas, ejemplos y herramientas. Para construir todos los objetivos, haga lo siguiente:
cd udp-discovery-cpp compilación mkdir compilación de cd cmake -DBUILD_EXAMPLE=ON -DBUILD_TOOL=ON .. hacer
También es posible simplemente agregar archivos de implementación a un proyecto y usar el sistema de compilación de ese proyecto:
udp_discovery_peer.cpp udp_discovery_ip_port.cpp udp_discovery_protocol.cpp
Esta biblioteca no tiene dependencias.
El programa de ejemplo udp-discovery-example puede ser una muy buena referencia sobre cómo utilizar esta biblioteca. Utiliza 12021 como puerto y 7681412 como ID de aplicación, estos valores deben decidir los usuarios de la biblioteca udp-discovery-cpp .
Para iniciar el par de descubrimiento, los usuarios primero deben crear el objeto udpdiscovery::PeerParameters y completar los parámetros:
udpdiscovery::PeerParameters parámetros;// Establece el puerto que se utilizará para recibir y enviar paquetes de descubrimiento.parameters.set_port(kPort);// Establece la identificación de la aplicación, solo se pueden descubrir los pares con la misma identificación de la aplicación.parameters.set_application_id (kApplicationId);// Este par puede descubrir otros pares.parameters.set_can_discover(true);// Este par puede ser descubierto por otros peers.parameters.set_can_be_discovered(true);// Los usuarios pueden modificar otros parámetros (tiempos de espera, modo de comparación entre pares) para satisfacer sus necesidades.// Consulte el archivo udp_discovery_peer_parameters.hpp.
Luego cree un objeto udpdiscovery::Peer e inicie el descubrimiento proporcionando datos de usuario que se asociarán con este par:
udpdiscovery::Peer peer; peer.Start(parámetros, datos_usuario);
Los datos del usuario se transferirán y serán descubiertos por otros pares. Los datos del usuario pueden ser usuario por aplicación de usuario para almacenar algunos datos significativos que la aplicación desea compartir entre pares.
El objeto udpdiscovery::Peer creado e iniciado se puede utilizar para enumerar los pares descubiertos actualmente:
std::list<udpdiscovery::DiscoveredPeer> new_discovered_peers = peer.ListDiscovered();
Hay dos opciones para comparar pares descubiertos y considerarlos iguales:
kSamePeerIp : compara solo la parte IP del paquete de descubrimiento recibido, por lo que varias instancias de aplicaciones que envían paquetes desde la misma IP se considerarán como un solo par.
kSamePeerIpAndPort : el valor predeterminado, compara la IP y el puerto del paquete de descubrimiento recibido, por lo que varias instancias de aplicaciones que envían paquetes desde la misma IP se considerarán pares diferentes.
Los usuarios pueden usar udpdiscovery::Mismo función para comparar dos listas de pares descubiertos para decidir si la lista de pares descubiertos es la misma, si aparecen nuevos pares o si algunos desaparecen:
bool is_same = udpdiscovery::Same(parameters.same_peer_mode(), discover_peers, new_discovered_peers);
La compilación CMake de esta biblioteca produce una biblioteca estática, un programa de ejemplo udp-discovery-example y una herramienta para descubrir pares locales udp-discovery-tool .
El programa de ejemplo udp-discovery-example tiene los siguientes argumentos:
Uso: ./udp-discovery-example {transmisión|multidifusión|ambos} {descubrimiento|descubrible|ambos} [datos_usuario] transmisión: esta instancia utilizará la transmisión para ser descubierta por otros multidifusión: esta instancia utilizará el grupo de multidifusión (224.0.0.123) para el descubrimiento ambos: esta instancia utilizará tanto el grupo de transmisión como el de multidifusión (224.0.0.123) para el descubrimiento. descubrir: esta instancia tendrá la capacidad de descubrir solo otras instancias Descubrible: esta instancia tendrá la capacidad de ser descubierta solo por otras instancias. ambos: esta instancia podrá descubrir y ser descubierta por otras instancias. user_data: la cadena enviada durante la transmisión, que se muestra junto a la IP del par
Cuando el programa de ejemplo se ejecuta en modo detectable , ingresa al modo CLI esperando los comandos del usuario:
> ayuda Los comandos son: ayuda, datos_usuario, salir.
El comando user_data cambia los datos del usuario asociados con este par. El comando exit sale del udp-discovery-example enviando correctamente el paquete kPacketIAmOutOfHere .
La herramienta de descubrimiento udp-discovery-tool tiene los siguientes argumentos:
Uso: ./udp-discovery-tool puerto application_id application_id: ID entero de la aplicación a descubrir. puerto - puerto utilizado por la aplicación