종속성 없이 C++ 프로그램에 로컬 네트워크 검색 기능을 추가하는 작은 라이브러리
사용자
구축 방법
사용방법
예제 프로그램
발견 도구
udp-discovery-cpp 라이브러리 사용자 목록은 USERS.md 문서를 참조하세요.
이 라이브러리는 CMake를 사용하여 정적 라이브러리, 예제 및 도구를 빌드합니다. 모든 타겟을 빌드하려면 다음을 수행하십시오.
CD UDP-디스커버리-cpp mkdir 빌드 CD 빌드 cmake -DBUILD_EXAMPLE=ON -DBUILD_TOOL=ON .. 만들다
또한 프로젝트에 구현 파일을 추가하고 해당 프로젝트의 빌드 시스템을 사용하는 것도 가능합니다.
udp_discovery_peer.cpp udp_discovery_ip_port.cpp udp_discovery_protocol.cpp
이 라이브러리에는 종속성이 없습니다.
예제 프로그램 udp-discovery-example은 이 라이브러리를 사용하는 방법에 대한 매우 좋은 참고 자료가 될 수 있습니다. 포트로 12021을 사용하고 애플리케이션 ID로 7681412를 사용합니다. 이러한 값은 udp-discovery-cpp 라이브러리 사용자가 결정해야 합니다.
검색 피어를 시작하려면 사용자는 먼저 udpdiscovery::PeerParameters 개체를 만들고 매개변수를 입력해야 합니다.
udpdiscovery::PeerParameters 매개변수;// 검색 패킷 수신 및 전송에 사용할 포트를 설정합니다.parameters.set_port(kPort);// 애플리케이션 ID를 설정합니다. 동일한 애플리케이션 ID를 가진 피어만 검색할 수 있습니다.parameters.set_application_id (kApplicationId);// 이 피어는 다른 피어를 발견할 수 있습니다.parameters.set_can_discover(true);// 이 피어는 다른 피어에 의해 발견될 수 있습니다 peers.parameters.set_can_be_discovered(true);// 사용자는 필요에 맞게 다른 매개변수(시간 초과, 피어 비교 모드)를 조정할 수 있습니다.// udp_discovery_peer_parameters.hpp 파일을 참조하세요.
그런 다음 udpdiscovery::Peer 개체를 만들고 이 피어와 연결될 사용자 데이터를 제공하는 검색을 시작합니다.
udpdiscovery::피어 피어; 피어.시작(매개변수, user_data);
사용자 데이터는 전송되고 다른 피어에 의해 검색됩니다. 사용자 데이터는 애플리케이션이 피어 간에 공유하려는 의미 있는 데이터를 저장하기 위해 사용자 애플리케이션별로 사용자가 될 수 있습니다.
생성되고 시작된 udpdiscovery::Peer 개체는 현재 검색된 피어를 나열하는 데 사용할 수 있습니다.
std::list<udpdiscovery::DiscoveredPeer> new_discovered_peers = 피어.ListDiscovered();
검색된 피어를 비교하고 동일한 것으로 간주하는 두 가지 옵션이 있습니다.
kSamePeerIp - 수신된 검색 패킷의 IP 부분만 비교하므로 동일한 IP에서 패킷을 보내는 여러 애플리케이션 인스턴스가 하나의 피어로 간주됩니다.
kSamePeerIpAndPort - 기본값은 수신된 검색 패킷의 IP와 포트를 모두 비교하므로 동일한 IP에서 패킷을 보내는 애플리케이션의 여러 인스턴스는 서로 다른 피어로 간주됩니다.
사용자는 udpdiscovery::Same 함수를 사용하여 발견된 피어의 두 목록을 비교하여 발견된 피어 목록이 동일한지, 새 피어가 나타나는지 또는 일부 피어가 사라지는지 결정할 수 있습니다.
bool is_same = udpdiscovery::Same(parameters.same_peer_mode(), discover_peers, new_discovered_peers);
이 라이브러리의 CMake 빌드는 정적 라이브러리, 예제 프로그램 udp-discovery-example 및 로컬 피어 udp-discovery-tool을 검색하는 도구를 생성합니다.
예제 프로그램 udp-discovery-example에는 다음 인수가 있습니다.
사용법: ./udp-discovery-example {broadcast|multicast|both} {discover|discoverable|both} [user_data] 방송 - 이 인스턴스는 다른 사람이 발견하기 위해 방송을 사용합니다. 멀티캐스트 - 이 인스턴스는 검색을 위해 멀티캐스트 그룹(224.0.0.123)을 사용합니다. 둘 다 - 이 인스턴스는 검색을 위해 브로드캐스트 및 멀티캐스트 그룹(224.0.0.123)을 모두 사용합니다. 검색 - 이 인스턴스는 다른 인스턴스만 검색할 수 있는 기능을 갖습니다. 검색 가능 - 이 인스턴스는 다른 인스턴스에서만 검색할 수 있습니다. 둘 다 - 이 인스턴스는 다른 인스턴스를 검색하고 검색할 수 있습니다. user_data - 브로드캐스팅 시 전송되는 문자열로, 피어의 IP 옆에 표시됩니다.
예제 프로그램이 검색 가능 모드에서 실행되면 사용자 명령을 기다리는 CLI 모드로 들어갑니다.
> 도움 명령은 다음과 같습니다: help, user_data, 종료
user_data 명령은 이 피어와 관련된 사용자 데이터를 변경합니다. exit 명령은 kPacketIAmOutOfHere 패킷을 정상적으로 보내는 udp-discovery-example을 종료합니다.
검색 도구 udp-discovery-tool 에는 다음 인수가 있습니다.
사용법: ./udp-discovery-tool application_id 포트 application_id - 검색할 애플리케이션의 정수 ID port - 애플리케이션이 사용하는 포트