![]() |
ازاي احلل بكيتات
منقول من Mahmoud Zahran لينك الموضوع الاصلي عفواً لايمكن عرض الروابط إلا بعد الرد على الموضوع موضوع اخر عليك ان تراه عفواً لايمكن عرض الروابط إلا بعد الرد على الموضوع موضوع اخر عفواً لايمكن عرض الروابط إلا بعد الرد على الموضوع المقدمة مرحبا ، هذه هي المره الثالثة لي في كتابة هذا. أفترض أنك تشاهد هذا الموضوع التعليمي لأن لديك اهتمام بالبرمجة مع Packets. قبل أن نبدأ ، يجب أن تعرف قليلاً عن أساسيات البرمجة في C #. إذا كنت جديدًا نسبيًا ، فلا بأس بذلك. سأقضي الكثير من وقتي في هذا البرنامج التعليمي لمراجعة المفاهيم. بشكل عام ، يعد هذا مكانًا جيدًا للبدء إذا كنت ترغب في المراجعة في وقتك الخاص: دليل البرمجة C # كود:
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/ Sockets قبل أن نتحدث عن packets ، دعنا نتحدث عن sockets. Sockets هي وسيلة لتطبيقين للتحدث إلى بعضهم البعض عبر شبكة. يمكنك التفكير في هذا كخط هاتف ، حيث يكون كل طرف هو هاتف (أو مقبس). عندما يكون اكونت Conquer جاهزًا للتحدث إلى خادم اللعبة ، يقوم بطلبه. يستمع خادم اللعبة لهذه المكالمة من العميل ، وسيقبل المكالمة بمجرد وصولها. كيف يتحدثون أين يأتي packets و protocols. تساعدنا Protocols في تحديد كيفية التحدث عبر شبكة ، بينما تحتوي packets على رسالتنا الفعلية . يستغرق دقيقة واحدة لمراجعة الفيديو أدناه حول الإنترنت والحزم والبروتوكولات. في Conquer Online ، نستخدم TCP / IP لتحديد كيفية تبادل الرسائل بين العميل والخادم. يعرّف IP كيفية توجيه الحزمة إلى الخادم ، بينما يعرّف TCP كيفية تقسيم الحزم وإعادة تجميعها بالترتيب الصحيح (كلاهما مبين في الفيديو أعلاه). ومع ذلك ، فإننا نرى الحزم كاملة (بالنسبة للجزء الأكبر). لا داعي للقلق بشأن كيفية وصوله إلى الخادم ؛ نحن بحاجة فقط إلى التركيز على ما يقولون. ترتيب البايت لفهم كيف يتحدث Conquer Online ، علينا أن نفهم كيف يطلب الكلمات (بالمعنى المجازي والحرفي). أفضل تمثيل للرسائل هو صفيف وحدات البايت (وحدات البايت هي أصغر وحدة يمكن معالجتها في البرمجة). على سبيل المثال ، في السلسلة "Hello World" (بافتراض ترميز ASCII) ، يكون كل حرف بايت واحد. لذلك ، ستظهر رسالة "Hello World" على أنها الحزمة التالية: كود بلغة HTML:
H e l l o W o r l d بالنسبة للأرقام التي يزيد حجمها عن 255 ، مثل كلمة (ushort) ، أو كلمة مزدوجة (uint) ، أو كلمة رباعية (ulong) ، فإن قيمة هذا الرقم تفيض إلى البايتات التالية. على سبيل المثال ، الكلمة 1024 في الست عشري هي 400. سيتم تقسيم هذا عبر وحدتي بايت كـ 4 و 00. المشكلة هي ، في أي ترتيب؟ يمكن أن تكون إما مكتوبة كـ [04 00] أو [00 04]. وهذا ما يسمى ترتيب البايت ، ويشبه إلى حد كبير لهجة للتحدث. هناك نوعان من أوامر البايت: Little Endian و Big Endian. الهدف من Big Endian هو تخزين البايت الأكثر أهمية في أصغر عنوان. هذا يعني أن الرقم السداسي العشري لدينا وهو 400 سيظهر كـ [04 00]. هذا سهل القراءة ، لأنه يقرأ من اليسار إلى اليمين. هدف Little Endian هو تخزين البايت الأقل أهمية في أصغر عنوان. هذا يعني أن الرقم السداسي عشر لدينا هو 400 سيظهر كـ [00 04]. هذا يقرأ إلى الوراء ، ولكن القيمة في القيام بذلك هي أن رقمًا مثل 5 يتم تحويله من كلمة إلى بايت لا يتطلب تغيير العنوان. قد يتحول ببساطة من [05 00] إلى [05] فقط. لم نغير نقطة الانطلاق في المجموعة الخاصة بنا للقيام بذلك ، لقد نجحت للتو. يستخدم Conquer Online Little Endian ، وهذا جيد لأن C # يستخدم Little Endian أيضًا لتحويلات وتدفقات البت. للمساعدة في التحويل بين العشرية والسداسية عشرية ، فكر في استخدام "حاسبة Windows" في وضع "المبرمج". الهياكل والآن بعد أن فهمنا كيف يقوم Conquer Online بترتيب الكلمات في الرسائل ، دعنا ننتقل إلى ما يتحدث عنه Conquer Online. مع كل حزمة يتم إرسالها ، يبدأ العميل والخادم برأس كلمتين. يحتوي هذا الرأس على طول الحزمة ونوع الحزمة التي يتم إرسالها. هنا مثال: [18 00 15 27]. الكلمة الأولى هي الطول: 0018 (أو 24 بالتدوين العشري). الكلمة الثانية هي النوع: 2715 (10005 بالأرقام العشرية). هذه هي الحزمة MsgWalk. يستغرق دقيقة واحدة لإلقاء نظرة على الهيكل على الويكي. يحتوي كل نوع حزمة على رسالة مختلفة يرسلها. على سبيل المثال ، تصف الحزمة MsgWalk خطوة في العالم ، يتم تنفيذها بواسطة لاعب أو وحش. دعنا نقرأ تفريغ الحزمة التالي لـ MsgWalk للتصحيح 5517. سيساعد أيضًا مخطط الاتجاه أدناه. عفواً لايمكن عرض الروابط إلا بعد الرد على الموضوع كود بلغة HTML:
18 00 15 27 72 00 00 00 29 20 1A 00 00 00 00 00 كود PHP:
---------------------------- في التمرين * أعلم أن هناك الكثير لتستقبله ، لكن الآن دعنا نبرمج هذا الهيكل في C # (أسهل كثيرًا). في هذا البرنامج التعليمي ، سأستخدم BitConverter لقراءة البنية في C #. في المثال أدناه ، لا أتعامل مع تذييل الحزمة. بدلاً من ذلك ، أهملها (حيث أنني لست بحاجة إلى ذلك - إنها حقًا جيدة فقط لتصحيح أخطاء مصدر الحزمة عبر الشبكة كملف رزم). كود بلغة HTML:
var length = BitConverter.ToUInt16(Packet, 0); Links عفواً لايمكن عرض الروابط إلا بعد الرد على الموضوع عفواً لايمكن عرض الروابط إلا بعد الرد على الموضوع |
رد: ازاي احلل بكيتات
عاااااااش
|
رد: ازاي احلل بكيتات
بالبنط العريض عاش |
رد: ازاي احلل بكيتات
عاش
|
رد: ازاي احلل بكيتات
اقتباس:
اقتباس:
اقتباس:
|
رد: ازاي احلل بكيتات
عاش ياوحش
|
رد: ازاي احلل بكيتات
موضوع مميز تسلم ايدك
|
رد: ازاي احلل بكيتات
ممتاو
|
رد: ازاي احلل بكيتات
Very Good
|
رد: ازاي احلل بكيتات
تسلم
|
الساعة الآن 08:57 AM |
مرحبا بكم في منتدي اكواد لتطوير الالعاب