مساحة اعلانية

آخر المواضيع

إنشاء لعبة مع صباح الخير-نظرة عامة على الشبكات


صباح الخير 
Bonjour هي تكنولوجيا تجعل من السهل جدا اكتشاف الخدمات.على الرغم من قوتها وسهولة الأستخدام, فإنة لا يتلقي الكثير من الإهتمام فى مجتمع Cocoa صباح الخير تعمل بشكل جيد جدا مع مكتبة CocoaAsyncSocket إحدي المكتبات مفتوحة المصدر التى توفر واجهة Objective-C للعمل مع المنافذ على iOS و OSX



فى هذه السلسلة سوف أعرض لكم صباح الخير Bonjour ومكتبة CocoaAsyncSocket لعمل لعبة بسيطة ومتصلة بالشبكة. على طول الطريق, سوف أدخلك فى عالم الشبكات وذلك بمناقشة بروتوكولات TCP و UDP فضلا عن تيارات المداخل والمنافذ .

مقدمة :
فى هذة السلسلة , سوف نقوم بإنشاء لعبة شبكية بسيطة .
سوف يكون تركيزنا الأساسي على الجانب المتعلق بالربط الشبكي للعبة . وسوف أعرض عليك كيفية توصيل جهازين بإستخدام مكتبة CocoaAsyncSocket و صباح الخير Bonjour  . اللعبة التى سوف نقوم بإنشاءها تسمح بلاعبين (شخصين) على نفس الشبكة لتحدي بعضهم البعض. اللعبة نفسها لن تكون متقدمة جدا, لا تتوقع وصول الجرافيك لدرجة عالية FPS.فى هذة السلسلة لن أتحدث عن البنية التحتية التي تمكن تطبيقات الشبكات من الأتصال ببعضهم البعض. بدلا من ذلك سوف أركز على البروتوكولات والتقنيات التي تشكل الأساس فى التطبيقات الشبكية .فهم أساسيات بروتوكولات TCP و UDP  والمنافذ والتيارات والتي لا تقدر بثمن بالنسبة للمطورين, لا سيما اولئك الذيم يخططون لإنشاء التطبيقات التي تعتمد على شبكة الأتصال. حتي إذا كنت لا تنوي إستخدام صباح الخير Bonjour , أوصي قراءة بقية هذه المقالة للحصول على فهم أفضل للربط الشبكي.

فى هذة المقالة, سوف أركز على العديد من المكونات الرئيسية للتطبيقات الشبكية . سوف تساعدك على فهم كيفية عمل صباح الخير Bonjour’ متي واين تكون ايضا جعل العمل مع مكتبة CocoaAsyncSocket أسهل بكثير .

ضع فى إعتبارك أن صباح الخير ليس مطلوبا لتطوير شبكة الأتصال . معظم أنظمة تشغيل Unix-based  تستخدم منافذ BSD كواجهة لبرمجة الشبكة الأساسية الخاصة بهم علي IOS و OS X,  Bad Socket liberty متاحة بسهولة للعمل مع منافذ مكتبة BSD , ومع ذلك هي ليست لضعاف القلوب (المبتدئين) تتطلب معرفة متعمقة لمنافذ البرمجة و لغة C. وفي iOS و OS X  , يمكنك أيضا أستخدام مستوي منخفض من CFNetwork Framewor, لدية امتداد مباشر الي منفذ BSD  . شركة أبل صممت ال C FNetwork Framework  لتسهيل عملية الربط الشبكي عن طريق تجنب التفاعل المباشر مع منافذ BSD . واحدة من أهم مزايا ال CF Network هي دعمها المدمج لتشغيل حلقة التكامل. CF Network جزء من إطار "المؤسسة الأساسية " والمكتوبة بلغة C .

حتي تستخدم عددا مذهلا من IOS و OS X المطورين يستخدمون Objective-c  . إذا كنت واحدا من هؤلاء المطورين, قد يبدو CF Network شفافا . مع ذلك هناك لحل لهذا , واسمها هو مكتبة CocoaAsyncSocket . المكتبة CocoaAsyncSocket تجعل من التفاعل مع المنافذ أسهل , وتقدم ايضا واجهة انيقة ل Objective-C .  الإصدار الحالي من مكتبة CocoaAsyncSocket يدمج بدقة مع Grand Central Dispatch (GC D) مما يجعل البرمجة غير متزامنة . 

دعونا نلقي نظرة عن قرب على أساسيات الشبكات . بدون فهم جيد للمداخل ومنافذ التوصيل , والتيارات, حتى صباح الخير Bonjour  ومكتبة CocoaAsyncSocket لن تكون ذو فائدة كبيرة لك!

أساسيات الشبكات :
تحت الغطاء
الشبكات ليست سهله’ وهذا أمر يتغير فى أى وقت قريب . على الرغم من أن البنية التحتية التي تتيح لنا الوصول إلي الأنترنت تغيرت جذريا خلال العقود الماضية . التكنولوجيات والبروتوكولات الأساسية تغيرت لكن قليلا جدا .والسبب هو أن الخدمات التى نستخدمها يوميا تعتمد اعتمادا شديدا على البروتوكولات المنطقية الأساسية, وأقل بكثير على البنية التحتية المادية . فى التسعينات, معظمنا قام بتصفح مواقع الويب على شبكة الأنترنت من خلال اتصال هاتفي. فى الوقت الحاضر , معظم الناس يستطيعون الوصول إالي الأنترنت بسرعة اتصال الية, فى السنوات القليلة الماضية بدء جزءا كبير يقوم بأستخدام شبكة الأنترنت بواسطة الأجهزة النقالة . وبعبارات أخري, تغيرت البنية التحتية ’ ولكن لم تتغير البروتوكولات المنطقية اللازمة لتوجيه حركة المرور والتفاعل مع التطبيقات بشكل كبير .

لا تغير الفريق الفائز :
هناك سبب أخر ان التكنولوجيات الأساسية والبروتوكولات التي نستخدمها لنقل البيانات على شبكة الأنترنت لم تتغير كثيرا لأنها أثبتت ثقتها وقوتها . تلك التكنولوجيات والبروتوكولات يتم اختبارها جيدا وأنها اثبتت نفسها مرات لا تحصي على مدى العقود القليلة الماضية .

المداخل, المنافذ,التيارات
انت كمطور, ربما قد سمعت عن عناوين المداخل والمنافذ وما شابه . إذا لم تكن على دراية بهذه المصطلحات, اذا سنقدم لك عجائب عن المنافذ’ والمداخل’ والتيارات’ والبروتوكولات . للحصول على فهم أساسي للربط الشبكي , هي مفتاح التعريف البسيط للربط الشبكي والذي يتضمن المنافذ وأصدقائها .

المنافذ المحلية والبعيدة :
الأتصال الشبكي يعمل بواسطة منافذ التوصيل المدعومة. منافذ التوصيل هي واحدة من نهايات قناة الاتصال بين العمليتين اللتين تريد التحدث إلي بعضهم البعض. كما اقترحت او توقعت ’ الأتصال الشبكي او (قناة الاتصال بين العمليتين) لديها منفذين لكل نهاية . يتم انشاء اتصال شبكي بمنفذ واحد للأتصال بالمنفذ الأخر الذي يقوم بأستقبال الاتصال القادم او الأصغاء الي الأتصالات الوارده .الأختلاف بين الأتصال المحلي والأتصال بالمنافذ البعيده فقط الدلالية. من منظور المنافذ’ المنفذ هو المنفذ المحلي والمنفذ هو الأتصال بالمنفذ البعيد . هذا شىء منطقي . صحيح ؟

بينما يتم أستخدام منفذ الأتصال لإرسال وإستقبال البيانات . يمكن للمنفذ الأخر قراءة البيانات وكتابتها . و هذا يعني أنه فى معظم الحالات كل منفذ لدية اتجاهين , أحدهما للقراءة والأخر للكتابة . علي الرغم من أن الجداول جزءا هاما من برمجة المنافذ ’ نحن لن نتعامل مع مع التيارات مباشرة كتيارات نديرها بواسطة مكتبة CocoaAsyncSocket.

إنشاء اتصال شبكي :
كل مأخذ لدية عنوان يتكون من عنوان المضيف ورقم المنفذ . كل أجزاء المنافذ ضرورية لتأسيس اتصال بين مأخذين . لإبقاء الأمور بسيطة , عنوان المضيف عاده يكون عنوان IP ( بروتوكولات الأنترنت) للجهاز عندما يتعرف على رقم المنفذ والتأكد منه على الجهاز . قارن هذا الموضوع بمجمع سكني . المباني لديها عنوان اذا يستطيع الأشخاص ايجادها بسهوله . وكل شقة فى تلك المباني لديها رقم تعريف اذا يستطيع الزائرين للمجمع العثور على الشقة التي يبحثون عنها .

بروتوكولات الإرسال :
نقل البيانات عبر شبكة الإنترنت عملية معقدة , وقد أسفر إنشاء هذين البروتوكولين لتقوية شكل إرسال وإستقبال البيانات : TCP ( بروتوكول التحكم بالإرسال) و UDP  ( بروتوكول مخطط بيانات المستخدم )  . كلا البروتوكولين هي بروتوكولات طبقة النقل وجزء من مجموعة بروتوكولات إنترنت IP)).

انا متأكد من أن قرع جرس TCP  و UDP معظم لك . هناك العديد من الإختلافات الرئيسية بين كلا البروتوكولين , وأنه من المهم أن نفهم تلك الإختلافات . فى هذه السلسلة , سوف نركز على بروتوكول TCP . يقوم اتصال TCP بالتحكم فى تدفق البيانات من اخر نقطة الي الأخري .

موثوقية الشبكة :
الإختلافات الرئيسية بين TCP و UDP هى السرعة وكيفية التعامل مع الشبكة الموثوقة . إذا كنت ترغب في التأكد من أن ما يتم إرساله من خلال أحد طرفي الإتصال يخرج فى الطرف الأخر , هو صدقيك . TCP أبطأ من UDP , لكنه يملك سببا وجيها لكونه بطىء . بدون الدخول إلي تفاصيل كثيرة , من المهم أن نعرف أن TCP يتصل وينهي الأتصال مع كلا طرفي الإتصال . كما أنه يتأكد من ان كل الحزم التي يتم إرسالها من خلال القنوات تصل إلي الطرف الأخر . بالإضافة إلي ذلك TCP  يحترم نظام الحزم . واحده من الأسباب التي تجعل UDP أسرع من TCP بسبب أنها لا تتطلب المصافحة عند إنشاء وإنهاء الإتصال . بالإضافة إلي ذلك , بروتوكول UDP لا يهمه حزم البيانات المستقبله ايضا لا يهمه ترتيب الحزم التى تصل الية . إذا تم إسقاط الحزمة على طول الطريق , لا يحاول بروتوكول UDP إعادة إرسال أنه تم إسقاط الحزمة . مصدر القلق الرئيسي من UDP أنه يقوم بإرسال البيانات عبر قناة الإتصال بشكل سريع وبأكبر سرعة .

انا متأكد من أنك فى البداية لتري بروتوكولات TCP و UDP مختلفة جدا وأن كل بروتوكول يخدم غرضا مختلفا . على سبيل المثال UDP  , مثالي لتدفق الفيديو والصوت مباشرة . السرعة امر ضروري فى هذة الحالات . لا يهم اذا كان يتم إسقاط الحزمة على طول الطريق . إذا إنخفض إعادة ارسال الحزمة , سوف تصل متأخرة للبث المباشر ولن يكون ثابت أو ذات صلة. الألعاب متعددة اللاعبين عبر الإنترنت تستفيد ايضا من UDP سرعة UPD أكثر اهمية من موثوقيتها . الحزم التي تصل متاخرة جدا , لم تعد ذات صلة , وهذه هى الفكره الأساسية وراء سرعة UPD وموثوقيتها .

TCP , من ناحية أخري ’ كل شىء عن الموثوقية . يتم استخدامه للبريد الإلكتروني وتصفح الويب . أنها أبطأ قليلا , ولكن سوف تقوم بالمهمه فهي أفضل جدا للتأكد من أنك استقبلت ما قمت بطلبة . بروتوكول TCP قوى جدا ويدعم إعادة إرسال الحزم المسقطة وتحترمها ايضا بالترتيب الذي تقوم الحزم بإرسالة . على الرغم من أننا سوف نقوم نقوم بإستخدام بروتوكول TCP فى هذه السلسلة ’ ضع فى إعتبارك أن المكتبة CocoaAsynSocket  تدعم أيضا بروتوكول UDP  .

الخادم والعميل :
فيما يتعلق بالربط الشبكي , هناك مفهموم واحد تحتاج إلى فهمه أكثر وهو Client-server mode  .فى كل الإتصالات هناك عميل وخادم client and server  . قارن هذا النموذج مع شخصين بإجراء مكالمة هاتفية . ستيفين يريد إجراء مكالمة هاتفية للوسي . وهناك ثلاثة متطلبات أساسية لهذا العمل .

    1- الشرط الأول هو أن يعرف ستيفن عن لوسي ويجب أن يعرف رقم هاتف لوسي . نفس الشىء صحيح بالنسبة لعميل يحاول الأتصال بالخادم . يحتاج العميل لمعرفة وجود الخادم وأنه يحتاج ايضا إلي معرفة عنوان الملقم .
    2- العكس , ومع ذلك, غير صحيح. لوسي لا تريد معرفة أي شىء عن ستيفن للأتصال بلوسي . وبعبارة أخري , الخادم لا يحتاج لمعرفتة لوجود عميل للاتصال بالخادم .
   3-حالما يتم تأسيس الإتصال , يمكن أن يتحدث ستيفن إلي لوسي ولوسي يمكنها التحدث إلي ستيفن . عند لتصال عميل إلي الملقم , يمكن للعميل إرسال البيانات إلي الملقم والملقم يمكنه إرسال البيانات إلي العميل .

سيصبح مفهوم العميل والخادم هام عندما ننظر إلي صباح الخير Bonjour فى المقال القادم من هذه السلسلة . دعونا نختم هذا البرنامج التعليمي لنتحدث ونأخذ نظرة عامة علي صباح الخير Bonjour  .

كيف وأين  تتناسب صباح الخير Bonjour؟
ما هي صباح الخير Bonjour وكيف تتدرج فى قصتنا ؟ صباح الخير Bonjour  تم إنشاؤها بواسطة أبل واستنادا إلي Zeroconf .وهدفها الأساسي لجعل اكتشاف الخدمات أكثر سهولة .هناك أحتمالات انك استخدمت صباح الخير  Bonjour العديد من المرات دون حتى أن تعرف ذلك . مع ذلك لم تستخدم نهائيا طابعة على شبكتك المحلية ؟ الم تشعر بأن هذا الأمر استغرق منك تقريبا أي جهد لإستخدام الطابعة على الرغم من أنه لم يكن فعليا متصل بالكمبيوتر الخاص بك ؟ تطبيق Apple's IOS أيضا يستخدم صباح الخير Bonjour  والكثير من أنظمة تشغيل iOS   و OS X .

على الرغم من ان صباح الخير تقنية كبيرة . يجب أن نضع فى أعتبارنا أنها لا تأخذ الرعاية لإرسال أو تلقي البيانات  . ما تقوم به صباح الخير Bonjour  هو نشر واكتشاف الخدمات الموجودة على نفس الشبكة المحلية.
فى المقالة القادمة , سوف نلقي نظرة فاحصة على Bonjour's API'S و سوف نبدأ بناء نموذج العميل – الملقم Client-server التى ناقشناها فى هذة المقالة .

الإستنتاج
مع هذا البرنامج التعليمي يجب أن تفهم الربط الأساسي للشبكات , ومختلف العناصر المعنية ودور كل عنصر . فى الأجزاء المتبقية من هذة السلسلة . سنقوم بإعادة النظر وإستخدام بعض هذة المكونات حتى أنها مفتاح فهم ما قمنا بتغطيتة فى هذة المقالة . فى المقالة القادمة , سوف أتحدث أكثر حول نموذج العميل – الملقم (client-(server  التى تبين لك كيفية توصيل جهازين بإستخدام مكتبة CocoaAsyncSocket و صباح الخير Bonjour

الكــاتــب

    • مشاركة

ليست هناك تعليقات:

جميع الحقوق محفوظة لــ الشبح للمعلوميات 2019 ©