مكتبة صغيرة لإضافة ميزة اكتشاف الشبكة المحلية إلى برامج C++ الخاصة بك دون أي تبعيات
المستخدمين
كيفية البناء
كيفية الاستخدام
برنامج المثال
أداة الاكتشاف
للحصول على قائمة مستخدمي مكتبة udp-discovery-cpp، يرجى الرجوع إلى مستند USERS.md.
تستخدم هذه المكتبة CMake لإنشاء مكتبة ثابتة وأمثلة وأدوات. لبناء جميع الأهداف قم بما يلي:
cd udp-discovery-cpp بناء مكدير بناء القرص المضغوط 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 بارامترات;// يعين المنفذ الذي سيتم استخدامه لتلقي وإرسال حزم الاكتشاف.parameters.set_port(kPort);// يعين معرف التطبيق، يمكن اكتشاف الأقران الذين لديهم نفس معرف التطبيق فقط.parameters.set_application_id (kApplicationId);// يمكن لهذا النظير اكتشاف أقران آخرين.parameters.set_can_discover(true);// يمكن اكتشاف هذا النظير بواسطة أقران آخرين.parameters.set_can_be_discovered(true);// يمكن للمستخدمين تعديل المعلمات الأخرى (المهلات، وضع مقارنة الأقران) لتناسب احتياجاتهم.// يرجى الرجوع إلى ملف udp_discovery_peer_parameters.hpp.
ثم قم بإنشاء كائن udpdiscovery::Peer وابدأ في الاكتشاف مع توفير بيانات المستخدم التي سيتم ربطها بهذا النظير:
udpdiscovery::Peer Peer; Peer.Start(parameters, user_data);
سيتم نقل بيانات المستخدم وسيتم اكتشافها من قبل أقرانهم الآخرين. يمكن أن تكون بيانات المستخدم مستخدمًا من خلال تطبيق المستخدم لتخزين بعض البيانات ذات المعنى التي يريد التطبيق مشاركتها بين أقرانه.
يمكن استخدام كائن udpdiscovery::Peer الذي تم إنشاؤه وبدء تشغيله لسرد النظراء المكتشفين حاليًا:
std::list<udpdiscovery::DiscoveredPeer> new_discovered_peers = Peer.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|كلاهما} {discover|discoverable|كلاهما} [user_data] البث - سيستخدم هذا المثيل البث ليتم اكتشافه بواسطة الآخرين البث المتعدد - سيستخدم هذا المثيل مجموعة البث المتعدد (224.0.0.123) للاكتشاف كلاهما - سيستخدم هذا المثيل كلاً من مجموعة البث والبث المتعدد (224.0.0.123) للاكتشاف اكتشاف - سيكون لدى هذا المثيل القدرة على اكتشاف مثيلات أخرى فقط قابل للاكتشاف - سيكون لهذا المثيل القدرة على اكتشافه فقط من خلال مثيلات أخرى كلاهما - سيكون هذا المثيل قادرًا على اكتشافه واكتشافه بواسطة مثيلات أخرى بيانات المستخدم - السلسلة المرسلة عند البث، والتي تظهر بجوار عنوان IP الخاص بالنظير
عندما يتم تشغيل البرنامج النموذجي في الوضع القابل للاكتشاف ، فإنه يدخل في وضع واجهة سطر الأوامر (CLI) في انتظار أوامر المستخدم:
> مساعدة الأوامر هي: مساعدة، user_data، خروج
يقوم أمر user_data بتغيير بيانات المستخدم المرتبطة بهذا النظير. يقوم أمر الخروج بإنهاء مثال udp-discovery بإرسال حزمة kPacketIAmOutOfHere بأمان.
تحتوي أداة الاكتشاف udp-discovery-tool على الوسائط التالية:
الاستخدام: منفذ ./udp-discovery-tool application_id application_id - معرف عدد صحيح للتطبيق لاكتشافه المنفذ - المنفذ الذي يستخدمه التطبيق