Uma pequena biblioteca para adicionar recurso de descoberta de rede local aos seus programas C++ sem dependências
Usuários
Como construir
Como usar
Programa de exemplo
Ferramenta de descoberta
Para obter a lista de usuários da biblioteca udp-discovery-cpp, consulte o documento USERS.md.
Esta biblioteca usa CMake para construir biblioteca estática, exemplos e ferramentas. Para construir todos os alvos, faça:
cd udp-discovery-cpp compilação mkdir compilação de CD cmake -DBUILD_EXAMPLE=ON -DBUILD_TOOL=ON .. fazer
Também é possível apenas adicionar arquivos de implementação a um projeto e usar o sistema de compilação desse projeto:
udp_discovery_peer.cpp udp_discovery_ip_port.cpp udp_discovery_protocol.cpp
Esta biblioteca não possui dependências.
O programa de exemplo udp-discovery-example pode ser uma referência muito boa sobre como usar esta biblioteca. Ele usa 12021 como porta e 7681412 como ID do aplicativo, esses valores que os usuários da biblioteca udp-discovery-cpp devem escolher.
Para iniciar o peer de descoberta os usuários devem primeiro criar o objeto udpdiscovery::PeerParameters e preencher os parâmetros:
Parâmetros udpdiscovery::PeerParameters;// Define a porta que será usada para receber e enviar pacotes de descoberta.parameters.set_port(kPort);// Define o ID da aplicação, apenas peers com a mesma ID da aplicação podem ser descobertos.parameters.set_application_id (kApplicationId);// Este peer pode descobrir outros peers.parameters.set_can_discover(true);// Este peer pode ser descoberto por outro peers.parameters.set_can_be_discovered(true);// Os usuários podem ajustar outros parâmetros (tempo limite, modo de comparação de pares) para atender às suas necessidades. // Consulte o arquivo udp_discovery_peer_parameters.hpp.
Em seguida, crie um objeto udpdiscovery::Peer e inicie a descoberta fornecendo dados do usuário que serão associados a este peer:
udpdiscovery::Peer peer; peer.Start(parâmetros, user_data);
Os dados do usuário serão transferidos e descobertos por outros pares. Os dados do usuário podem ser usados usuário por aplicativo para armazenar alguns dados significativos que o aplicativo deseja compartilhar entre pares.
O objeto udpdiscovery::Peer criado e iniciado pode ser usado para listar os peers atualmente descobertos:
std::list<udpdiscovery::DiscoveredPeer> new_discovered_peers = peer.ListDiscovered();
Existem duas opções para comparar pares descobertos e considerá-los iguais:
kSamePeerIp - compara apenas a parte ip do pacote de descoberta recebido, portanto, múltiplas instâncias de aplicação enviando pacotes do mesmo ip serão consideradas como um par.
kSamePeerIpAndPort - o valor padrão, compara o IP e a porta do pacote de descoberta recebido, portanto, múltiplas instâncias de aplicativo enviando pacotes do mesmo IP serão consideradas como pares diferentes.
Os usuários podem usar a função udpdiscovery::Same para comparar duas listas de pares descobertos para decidir se a lista de pares descobertos é a mesma ou se novos pares aparecem ou alguns pares desaparecem:
bool is_same = udpdiscovery::Same(parameters.same_peer_mode(),discovered_peers, new_discovered_peers);
A construção CMake desta biblioteca produz uma biblioteca estática, o programa de exemplo udp-discovery-example e uma ferramenta para descobrir pares locais udp-discovery-tool .
O programa de exemplo udp-discovery-example possui os seguintes argumentos:
Uso: ./udp-discovery-example {broadcast|multicast|both} {discover|discoverable|both} [user_data] transmissão - esta instância usará a transmissão para ser descoberta por outros multicast - esta instância usará o grupo multicast (224.0.0.123) para descoberta ambos - esta instância usará o grupo de transmissão e multicast (224.0.0.123) para descoberta descobrir - esta instância terá a capacidade de descobrir apenas outras instâncias detectável - esta instância poderá ser descoberta apenas por outras instâncias ambos - esta instância poderá descobrir e ser descoberta por outras instâncias user_data - a string enviada durante a transmissão, mostrada ao lado do IP do peer
Quando o programa de exemplo é executado no modo detectável, ele entra no modo CLI aguardando os comandos do usuário:
> ajuda os comandos são: help, user_data, exit
O comando user_data altera os dados do usuário associados a este peer. O comando exit sai do udp-discovery-example enviando normalmente o pacote kPacketIAmOutOfHere .
A ferramenta de descoberta udp-discovery-tool possui os seguintes argumentos:
Uso: porta ./udp-discovery-tool application_id application_id – ID inteiro do aplicativo a ser descoberto porta - porta usada pelo aplicativo