ไลบรารี่ขนาดเล็กเพื่อเพิ่มคุณสมบัติการค้นพบเครือข่ายท้องถิ่นให้กับโปรแกรม C++ ของคุณโดยไม่ต้องพึ่งพา
ผู้ใช้
วิธีการสร้าง
วิธีใช้
ตัวอย่างโปรแกรม
เครื่องมือค้นพบ
สำหรับรายชื่อผู้ใช้ไลบรารี udp-discovery-cpp โปรดดูที่เอกสาร USERS.md
ไลบรารีนี้ใช้ CMake เพื่อสร้างไลบรารีแบบคงที่ ตัวอย่าง และเครื่องมือ หากต้องการสร้างเป้าหมายทั้งหมด ให้ทำดังนี้
ซีดี udp-discovery-cpp สร้าง mkdir สร้างซีดี cmake -DBUILD_EXAMPLE=ON -DBUILD_TOOL=ON .. ทำ
นอกจากนี้ยังเป็นไปได้ที่จะเพิ่มไฟล์การใช้งานให้กับโปรเจ็กต์และใช้ระบบบิลด์ของโปรเจ็กต์นั้น:
udp_discovery_peer.cpp udp_discovery_ip_port.cpp udp_discovery_protocol.cpp
ไลบรารีนี้ไม่มีการขึ้นต่อกัน
โปรแกรมตัวอย่าง udp-discovery-example อาจเป็นข้อมูลอ้างอิงที่ดีมากเกี่ยวกับวิธีใช้ไลบรารีนี้ โดยจะใช้ 12021 เป็นพอร์ตและ 7681412 เป็นรหัสแอปพลิเคชัน ค่าเหล่านี้ที่ผู้ใช้ไลบรารี udp-discovery-cpp ควรตัดสินใจ
ในการเริ่มต้นเพียร์การค้นพบ ผู้ใช้ควรสร้างวัตถุ udpdiscovery::PeerParameters ก่อน และกรอกพารามิเตอร์:
udpdiscovery::พารามิเตอร์ PeerParameters;// ตั้งค่าพอร์ตที่จะใช้สำหรับการรับและส่งการค้นพบ packets.parameters.set_port(kPort);// ตั้งค่ารหัสแอปพลิเคชัน เฉพาะเพียร์ที่มีรหัสแอปพลิเคชันเดียวกันเท่านั้นที่สามารถค้นพบได้ parameters.set_application_id (kApplicationId);// เพียร์นี้สามารถค้นพบ peers.parameters.set_can_discover อื่น ๆ (true); // เพียร์นี้สามารถค้นพบโดยผู้อื่น peers.parameters.set_can_be_discovered(true);// ผู้ใช้สามารถปรับแต่งพารามิเตอร์อื่นๆ (การหมดเวลา โหมดการเปรียบเทียบเพียร์) เพื่อให้เหมาะกับความต้องการ // โปรดดูไฟล์ udp_discovery_peer_parameters.hpp
จากนั้นสร้างออบเจ็กต์ udpdiscovery::Peer และเริ่มการค้นพบโดยให้ข้อมูลผู้ใช้ที่จะเชื่อมโยงกับเพียร์นี้:
udpdiscovery::เพียร์เพียร์; peer.Start (พารามิเตอร์, user_data);
ข้อมูลผู้ใช้จะถูกถ่ายโอนและจะถูกค้นพบโดยผู้อื่น ข้อมูลผู้ใช้สามารถเป็นผู้ใช้ตามแอปพลิเคชันผู้ใช้เพื่อจัดเก็บข้อมูลที่มีความหมายซึ่งแอปพลิเคชันต้องการแชร์ระหว่างเพื่อน
udpdiscovery::Peer object ที่สร้างและเริ่มต้นแล้วสามารถใช้เพื่อแสดงรายการเพื่อนที่ค้นพบในปัจจุบัน:
std::list<udpdiscovery::DiscoveredPeer> new_discovered_peers = peer.ListDiscovered();
มีสองตัวเลือกในการเปรียบเทียบเพื่อนที่ค้นพบและพิจารณาว่าเท่าเทียมกัน:
kSamePeerIp - เปรียบเทียบเฉพาะส่วน IP ของแพ็กเก็ตการค้นพบที่ได้รับ ดังนั้นแอปพลิเคชันหลายอินสแตนซ์ที่ส่งแพ็กเก็ตจาก IP เดียวกันจะถือเป็นเพียร์เดียว
kSamePeerIpAndPort - ค่าเริ่มต้น จะเปรียบเทียบทั้ง IP และพอร์ตของแพ็กเก็ตการค้นพบที่ได้รับ ดังนั้นแอปพลิเคชันหลายอินสแตนซ์ที่ส่งแพ็กเก็ตจาก IP เดียวกันจะถือเป็นเพียร์ที่แตกต่างกัน
ผู้ใช้สามารถใช้ฟังก์ชัน udpdiscovery::Same เพื่อเปรียบเทียบรายการเพื่อนที่ค้นพบสองรายการ เพื่อตัดสินใจว่ารายชื่อเพื่อนที่ค้นพบนั้นเหมือนกันหรือเพื่อนใหม่ปรากฏขึ้น หรือเพื่อนบางคนหายไป:
บูล is_same = udpdiscovery::Same (พารามิเตอร์.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, exit
คำสั่ง user_data เปลี่ยนข้อมูลผู้ใช้ที่เกี่ยวข้องกับเพียร์นี้ คำสั่ง exit จะออกจาก udp-discovery-example การส่งแพ็กเก็ต kPacketIAmOutOfHere อย่างงดงาม
เครื่องมือค้นหา udp-discovery-tool มีอาร์กิวเมนต์ดังต่อไปนี้:
การใช้งาน: พอร์ต ./udp-discovery-tool application_id application_id - รหัสจำนวนเต็มของแอปพลิเคชันที่จะค้นพบ พอร์ต - พอร์ตที่ใช้โดยแอปพลิเคชัน