احصائياتى

الردود
44

المشاهدات
2946
 
Rider
.:: نائب المدير ::.

    غير متواجد

المشاركات
2,604

+التقييم
0.98

تاريخ التسجيل
Jul 2019

الاقامة

نظام التشغيل

رقم العضوية
358
2019-09-19, 03:54 AM
المشاركة 1
2019-09-19, 03:54 AM
المشاركة 1
افتراضي ازاي احلل بكيتات
منقول من 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
[48 65 6C 6C 6F 20 57 6F 72 6C 64]
إذا كنت مرتبكًا ، فسيظهر ما ورد أعلاه بالسداسي عشري. راجع جدول عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع لتحويل الأحرف إلى بايت. لقد استخدمت ست عشرية لأن نطاق البايت بالعدد العشري هو من 0 إلى 255. 255 هو رقم قبيح للعمل معه. في الست عشري ، يكون النطاق من 0 إلى FF. FF هو رقم أسهل للعمل به كسقف نظرًا لأنه أعلى رقم يمكن أن يكون لرقمين. وهذا يعني أن أي عدد أكبر من FF أو رقمين يمكن أن يتدفق بشكل جيد إلى البايت التالي من رسالتنا.

بالنسبة للأرقام التي يزيد حجمها عن 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 
82 2D 3F 05 00 00 00 00 54 51 53 65 72 76 65 72

كود:
[Offset 04] 72 00 00 00 = 114: The direction of the player mod possible angles (8). 114 mod 8 = direction 2.
[Offset 08] 29 20 1A 00 = 1712169: The unique character ID making the step.
[
Offset 12] 00 00 00 00 = 0: The type of movement being sent (walking).
[
Offset 16] 82 2D 3F 05 = 88026498: Timestamp (current system tick).
[
Offset 20] 00 00 00 00 = 0: Map ID (not always supplied).
[
Offset 24] 54 51 53 65 72 76 65 72 = TQServer: The footer of the packet. 

بالنسبة إلى باتشات Conquer Online التي تزيد عن 5017 ، تنتهي كل حزمة من خادم اللعبة إما بـ "TQServer" أو "TQClient" ، اعتمادًا على موقعها. يشير "TQServer" إلى أن الحزمة من الخادم ، بينما تشير "TQClient" إلى أن الحزمة من العميل. لا يتم تضمين طول تذييل الصفحة في إزاحة 0 من الرأس (وهو طول الحزمة).

----------------------------
في التمرين
* أعلم أن هناك الكثير لتستقبله ، لكن الآن دعنا نبرمج هذا الهيكل في C # (أسهل كثيرًا). في هذا البرنامج التعليمي ، سأستخدم BitConverter لقراءة البنية في C #. في المثال أدناه ، لا أتعامل مع تذييل الحزمة. بدلاً من ذلك ، أهملها (حيث أنني لست بحاجة إلى ذلك - إنها حقًا جيدة فقط لتصحيح أخطاء مصدر الحزمة عبر الشبكة كملف رزم).
كود بلغة HTML:
var length = BitConverter.ToUInt16(Packet, 0);
var typeid = BitConverter.ToUInt16(Packet, 2);
var direction = BitConverter.ToUInt32(Packet, 4) % 8;
var character = BitConverter.ToUInt32(Packet, 8);
var typemove = BitConverter.ToUInt32(Packet, 12);
var timestamp = BitConverter.ToUInt32(Packet, 16);
var mapid = BitConverter.ToUInt32(Packet, 20);
إذا كنت تستخدم سورس من الانترنت ، والذي أوصيك بالإشارة إليه على أي حال للحصول على تعليق البرمجة لـ Conquer Online ، فراجع الطريقة التي يتعامل بها خادمك مع قراءة الحزمة وكتابتها. للحصول على أمثلة أفضل لنظام المقبس ومعالجة الرزم ، راجع مصدري: عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوعله مشاكله ، لكنه موثق بالكامل وسهل التعلم منه. آمل أن يكون هذا الدليل قد ساعدك في فهم المزيد حول كيفية عمل الشبكات والحزم مع Conquer Online. إذا كان لديك أي أسئلة أو طلبات للحصول على تفسيرات أفضل ، فيرجى إخبارنا بذلك.

Links
عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع
عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع



التعديل الأخير تم بواسطة Rider ; 2019-09-19 الساعة 04:01 AM
قديم 2019-09-19, 04:09 AM
المشاركة 2
nova
.:: عضو مميز ::.
  • غير متواجد
افتراضي رد: ازاي احلل بكيتات
عاااااااش

قديم 2019-09-19, 04:31 AM
المشاركة 3
virus7x
.:: عضو خبير ::.
  • غير متواجد
افتراضي رد: ازاي احلل بكيتات


بالبنط العريض



عاش



قديم 2019-09-19, 04:44 AM
المشاركة 4
Hazem
.:: المدير العام::.
  • غير متواجد
افتراضي رد: ازاي احلل بكيتات
عاش

قديم 2019-09-19, 08:09 AM
المشاركة 5
Rider
.:: نائب المدير ::.
  • غير متواجد
افتراضي رد: ازاي احلل بكيتات
عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع
عاااااااش
حبييي
عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع


بالبنط العريض



عاش


حبيب قلبي <3
عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع
عا
هههههههههه ناقص حرف ش

قديم 2019-09-19, 12:40 PM
المشاركة 6
ALz3em
.:: عضو مميز ::.
  • متواجد  الان
افتراضي رد: ازاي احلل بكيتات
عاش ياوحش

قديم 2019-09-19, 02:38 PM
المشاركة 7
DrShimanex
.:: عضو نشيط ::.
  • غير متواجد
افتراضي رد: ازاي احلل بكيتات
موضوع مميز تسلم ايدك

قديم 2019-10-30, 07:56 AM
المشاركة 8
mido0o
.:: عضو نشيط ::.
  • غير متواجد
افتراضي رد: ازاي احلل بكيتات
ممتاو

قديم 2019-11-03, 09:23 PM
المشاركة 9
Elviray12
.:: عضو نشيط ::.
  • غير متواجد
افتراضي رد: ازاي احلل بكيتات
Very Good

قديم 2020-02-14, 01:11 AM
المشاركة 10
AliNasser
.:: عضو خبير ::.
  • غير متواجد
افتراضي رد: ازاي احلل بكيتات
تسلم


العلامات المرجعية



الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 

الانتقال السريع

المواضيع المتشابهه للموضوع: ازاي احلل بكيتات
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
بكيتات دخول البورتو 6858 + لودر مينا لسورس ثور M.H.B[X-Coder]X البرامج والودرات 113 2021-09-11 03:06 AM
دلع سيرفرك بي اجمل اشكال title لاول مرة علي النت من احمد فتحي ahmedfathy تطوير سيرفرات كونكر 41 2021-02-05 06:09 AM
يا رجاله ازاي احمل باتش لي كونكر العادية اصدار قديم ahmedfathy مشكلات السيرفيرات كونكر الشخصيه 1 2019-08-29 01:55 PM


الساعة الآن 12:00 AM