Pustaka kecil untuk menambahkan fitur penemuan jaringan lokal ke program C++ Anda tanpa ketergantungan
Pengguna
Bagaimana cara membangun
Cara menggunakan
Contoh program
Alat penemuan
Untuk daftar pengguna perpustakaan udp-discovery-cpp silakan merujuk ke dokumen USERS.md.
Pustaka ini menggunakan CMake untuk membangun pustaka statis, contoh, dan alat. Untuk membangun semua target, lakukan:
cd udp-discovery-cpp pembuatan mkdir pembuatan cd cmake -DBUILD_EXAMPLE=ON -DBUILD_TOOL=ON .. membuat
Juga dimungkinkan untuk menambahkan file implementasi ke suatu proyek dan menggunakan sistem pembangunan proyek itu:
udp_discovery_peer.cpp udp_discovery_ip_port.cpp udp_discovery_protocol.cpp
Perpustakaan ini tidak memiliki ketergantungan.
Contoh program udp-discovery-example dapat menjadi referensi yang sangat baik tentang cara menggunakan perpustakaan ini. Ia menggunakan 12021 sebagai port dan 7681412 sebagai id aplikasi, nilai-nilai ini harus diputuskan oleh pengguna perpustakaan udp-discovery-cpp .
Untuk memulai rekan penemuan, pengguna harus terlebih dahulu membuat objek udpdiscovery::PeerParameters dan mengisi parameter:
udpdiscovery::Parameter PeerParameters;// Menyetel port yang akan digunakan untuk menerima dan mengirim paket penemuan.parameters.set_port(kPort);// Menyetel id aplikasi, hanya rekan dengan id aplikasi yang sama yang dapat ditemukan.parameters.set_application_id (kApplicationId);// Rekan ini dapat menemukan rekan lain.parameters.set_can_discover(true);// Rekan ini dapat ditemukan oleh orang lain peers.parameters.set_can_be_discovered(true);// Pengguna dapat mengubah parameter lain (batas waktu, mode perbandingan rekan) agar sesuai dengan kebutuhan mereka.// Silakan merujuk ke file udp_discovery_peer_parameters.hpp.
Kemudian buat objek udpdiscovery::Peer dan mulai penemuan dengan menyediakan data pengguna yang akan dikaitkan dengan rekan ini:
udpdiscovery::Rekan rekan; rekan.Mulai(parameter, data_pengguna);
Data pengguna akan ditransfer dan akan ditemukan oleh rekan-rekan lainnya. Data pengguna dapat digunakan oleh aplikasi pengguna untuk menyimpan beberapa data bermakna yang ingin dibagikan oleh aplikasi antar rekan.
Objek udpdiscovery::Peer yang dibuat dan dimulai dapat digunakan untuk membuat daftar rekan yang saat ini ditemukan:
std::daftar<udpdiscovery::DiscoveredPeer> new_discovered_peers = rekan.ListDiscovered();
Ada dua opsi untuk membandingkan rekan-rekan yang ditemukan dan menganggapnya setara:
kSamePeerIp - hanya membandingkan bagian ip dari paket penemuan yang diterima, sehingga beberapa contoh aplikasi yang mengirimkan paket dari ip yang sama akan dianggap sebagai satu rekan.
kSamePeerIpAndPort - nilai default, membandingkan ip dan port dari paket penemuan yang diterima, sehingga beberapa contoh aplikasi yang mengirimkan paket dari ip yang sama akan dianggap sebagai rekan yang berbeda.
Pengguna dapat menggunakan fungsi udpdiscovery::Same untuk membandingkan dua daftar rekan yang ditemukan untuk memutuskan apakah daftar rekan yang ditemukan sama atau rekan baru muncul atau beberapa rekan hilang:
bool is_same = udpdiscovery::Same(parameters.same_peer_mode(), found_peers, new_discovered_peers);
Pembuatan CMake dari perpustakaan ini menghasilkan perpustakaan statis, program contoh udp-discovery-example dan alat untuk menemukan rekan lokal udp-discovery-tool .
Contoh program udp-discovery-example memiliki argumen berikut:
Penggunaan: ./udp-discovery-example {broadcast|multicast|both} {discover|discoverable|both} [user_data] siaran - instance ini akan menggunakan penyiaran agar ditemukan oleh orang lain multicast - instance ini akan menggunakan grup multicast (224.0.0.123) untuk penemuan keduanya - instance ini akan menggunakan grup penyiaran dan multicast (224.0.0.123) untuk penemuan temukan - instance ini hanya dapat menemukan instance lainnya dapat ditemukan - instance ini hanya dapat ditemukan oleh instance lain keduanya - instance ini akan dapat ditemukan dan ditemukan oleh instance lain user_data - string yang dikirim saat siaran, ditampilkan di sebelah IP rekan
Ketika program contoh dijalankan dalam mode dapat ditemukan, program tersebut memasuki mode CLI menunggu perintah pengguna:
> bantuan perintahnya adalah: bantuan, data_pengguna, keluar
perintah user_data mengubah data pengguna yang terkait dengan rekan ini. perintah exit keluar dari contoh udp-discovery dengan anggun mengirimkan paket kPacketIAmOutOfHere .
Alat penemuan udp-discovery-tool memiliki argumen berikut:
Penggunaan: ./udp-discovery-tool application_id port application_id - bilangan bulat id aplikasi yang akan ditemukan port - port yang digunakan oleh aplikasi