المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : ازاي احلل بكيتات


Tefa
2019-09-19, 03:54 AM
منقول من Mahmoud Zahran



لينك الموضوع الاصلي
عفواً لايمكن عرض الروابط في الإرشيف
موضوع اخر عليك ان تراه
عفواً لايمكن عرض الروابط في الإرشيف
موضوع اخر
عفواً لايمكن عرض الروابط في الإرشيف KPNbiAdJh8wiZFbif4

المقدمة
مرحبا ، هذه هي المره الثالثة لي في كتابة هذا. أفترض أنك تشاهد هذا الموضوع التعليمي لأن لديك اهتمام بالبرمجة مع Packets. قبل أن نبدأ ، يجب أن تعرف قليلاً عن أساسيات البرمجة في C #. إذا كنت جديدًا نسبيًا ، فلا بأس بذلك. سأقضي الكثير من وقتي في هذا البرنامج التعليمي لمراجعة المفاهيم. بشكل عام ، يعد هذا مكانًا جيدًا للبدء إذا كنت ترغب في المراجعة في وقتك الخاص: دليل البرمجة C # عفواً لايمكن عرض الروابط في الإرشيف
. إذا كان لديك سؤال بالنسبة لي في أي وقت ، فلا تتردد في الرد أدناه وسأبذل قصارى جهدي للإجابة أو إعادة توجيهك إلى مقال جيد.



Sockets
قبل أن نتحدث عن packets ، دعنا نتحدث عن sockets. Sockets هي وسيلة لتطبيقين للتحدث إلى بعضهم البعض عبر شبكة. يمكنك التفكير في هذا كخط هاتف ، حيث يكون كل طرف هو هاتف (أو مقبس). عندما يكون اكونت Conquer جاهزًا للتحدث إلى خادم اللعبة ، يقوم بطلبه. يستمع خادم اللعبة لهذه المكالمة من العميل ، وسيقبل المكالمة بمجرد وصولها. كيف يتحدثون أين يأتي packets و protocols. تساعدنا Protocols في تحديد كيفية التحدث عبر شبكة ، بينما تحتوي packets على رسالتنا الفعلية . يستغرق دقيقة واحدة لمراجعة الفيديو أدناه حول الإنترنت والحزم والبروتوكولات.
7_LPdttKXPc


في Conquer Online ، نستخدم TCP / IP لتحديد كيفية تبادل الرسائل بين العميل والخادم. يعرّف IP كيفية توجيه الحزمة إلى الخادم ، بينما يعرّف TCP كيفية تقسيم الحزم وإعادة تجميعها بالترتيب الصحيح (كلاهما مبين في الفيديو أعلاه). ومع ذلك ، فإننا نرى الحزم كاملة (بالنسبة للجزء الأكبر). لا داعي للقلق بشأن كيفية وصوله إلى الخادم ؛ نحن بحاجة فقط إلى التركيز على ما يقولون.


ترتيب البايت
لفهم كيف يتحدث Conquer Online ، علينا أن نفهم كيف يطلب الكلمات (بالمعنى المجازي والحرفي). أفضل تمثيل للرسائل هو صفيف وحدات البايت (وحدات البايت هي أصغر وحدة يمكن معالجتها في البرمجة). على سبيل المثال ، في السلسلة "Hello World" (بافتراض ترميز ASCII) ، يكون كل حرف بايت واحد. لذلك ، ستظهر رسالة "Hello World" على أنها الحزمة التالية:
H e l l o W o r l d
[48 65 6C 6C 6F 20 57 6F 72 6C 64]

إذا كنت مرتبكًا ، فسيظهر ما ورد أعلاه بالسداسي عشري. راجع جدول ASCII (عفواً لايمكن عرض الروابط في الإرشيف) لتحويل الأحرف إلى بايت. لقد استخدمت ست عشرية لأن نطاق البايت بالعدد العشري هو من 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. سيساعد أيضًا مخطط الاتجاه أدناه.
عفواً لايمكن عرض الروابط في الإرشيف

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 #. في المثال أدناه ، لا أتعامل مع تذييل الحزمة. بدلاً من ذلك ، أهملها (حيث أنني لست بحاجة إلى ذلك - إنها حقًا جيدة فقط لتصحيح أخطاء مصدر الحزمة عبر الشبكة كملف رزم).
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 ، فراجع الطريقة التي يتعامل بها خادمك مع قراءة الحزمة وكتابتها. للحصول على أمثلة أفضل لنظام المقبس ومعالجة الرزم ، راجع مصدري: Phoenix. (عفواً لايمكن عرض الروابط في الإرشيف)له مشاكله ، لكنه موثق بالكامل وسهل التعلم منه. آمل أن يكون هذا الدليل قد ساعدك في فهم المزيد حول كيفية عمل الشبكات والحزم مع Conquer Online. إذا كان لديك أي أسئلة أو طلبات للحصول على تفسيرات أفضل ، فيرجى إخبارنا بذلك.

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

nova
2019-09-19, 04:09 AM
عاااااااش

ابو حمزه9
2019-09-19, 04:31 AM
بالبنط العريض



عاش

محمد ياسر
2019-09-19, 04:44 AM
عاش

Tefa
2019-09-19, 08:09 AM
عاااااااش

حبييي


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



عاش




حبيب قلبي <3
عا

هههههههههه ناقص حرف ش

ALz3em
2019-09-19, 12:40 PM
عاش ياوحش

DrShimanex
2019-09-19, 02:38 PM
موضوع مميز تسلم ايدك

mido0o
2019-10-30, 07:56 AM
ممتاو

Elviray12
2019-11-03, 09:23 PM
Very Good

AliNasser
2020-02-14, 01:11 AM
تسلم

amr69940
2020-02-15, 01:34 PM
رائع

uncelsam
2020-03-06, 11:58 PM
عااااش

AdmAhmed
2020-03-11, 02:24 PM
برنس والله

ModyMohamedAdel
2020-03-16, 12:28 AM
عاش

محمودمحمدسالم
2020-03-16, 02:59 AM
عاش

midoazoz
2020-04-09, 04:50 PM
عااااااش

Hazem20
2020-04-13, 04:15 AM
تسلم

toteo3344
2020-04-14, 12:22 AM
عاش

mohammedshafik
2021-07-28, 11:07 AM
thanks

eyad
2021-11-25, 02:09 AM
منقول من mahmoud zahran



لينك الموضوع الاصلي
عفواً لايمكن عرض الروابط في الإرشيف
موضوع اخر عليك ان تراه
عفواً لايمكن عرض الروابط في الإرشيف
موضوع اخر
عفواً لايمكن عرض الروابط في الإرشيف kpnbiadjh8wizfbif4

المقدمة
مرحبا ، هذه هي المره الثالثة لي في كتابة هذا. أفترض أنك تشاهد هذا الموضوع التعليمي لأن لديك اهتمام بالبرمجة مع packets. قبل أن نبدأ ، يجب أن تعرف قليلاً عن أساسيات البرمجة في c #. إذا كنت جديدًا نسبيًا ، فلا بأس بذلك. سأقضي الكثير من وقتي في هذا البرنامج التعليمي لمراجعة المفاهيم. بشكل عام ، يعد هذا مكانًا جيدًا للبدء إذا كنت ترغب في المراجعة في وقتك الخاص: دليل البرمجة c # عفواً لايمكن عرض الروابط في الإرشيف
. إذا كان لديك سؤال بالنسبة لي في أي وقت ، فلا تتردد في الرد أدناه وسأبذل قصارى جهدي للإجابة أو إعادة توجيهك إلى مقال جيد.



Sockets
قبل أن نتحدث عن packets ، دعنا نتحدث عن sockets. Sockets هي وسيلة لتطبيقين للتحدث إلى بعضهم البعض عبر شبكة. يمكنك التفكير في هذا كخط هاتف ، حيث يكون كل طرف هو هاتف (أو مقبس). عندما يكون اكونت conquer جاهزًا للتحدث إلى خادم اللعبة ، يقوم بطلبه. يستمع خادم اللعبة لهذه المكالمة من العميل ، وسيقبل المكالمة بمجرد وصولها. كيف يتحدثون أين يأتي packets و protocols. تساعدنا protocols في تحديد كيفية التحدث عبر شبكة ، بينما تحتوي packets على رسالتنا الفعلية . يستغرق دقيقة واحدة لمراجعة الفيديو أدناه حول الإنترنت والحزم والبروتوكولات.
7_lpdttkxpc


في conquer online ، نستخدم tcp / ip لتحديد كيفية تبادل الرسائل بين العميل والخادم. يعرّف ip كيفية توجيه الحزمة إلى الخادم ، بينما يعرّف tcp كيفية تقسيم الحزم وإعادة تجميعها بالترتيب الصحيح (كلاهما مبين في الفيديو أعلاه). ومع ذلك ، فإننا نرى الحزم كاملة (بالنسبة للجزء الأكبر). لا داعي للقلق بشأن كيفية وصوله إلى الخادم ؛ نحن بحاجة فقط إلى التركيز على ما يقولون.


ترتيب البايت
لفهم كيف يتحدث conquer online ، علينا أن نفهم كيف يطلب الكلمات (بالمعنى المجازي والحرفي). أفضل تمثيل للرسائل هو صفيف وحدات البايت (وحدات البايت هي أصغر وحدة يمكن معالجتها في البرمجة). على سبيل المثال ، في السلسلة "hello world" (بافتراض ترميز ascii) ، يكون كل حرف بايت واحد. لذلك ، ستظهر رسالة "hello world" على أنها الحزمة التالية:
h e l l o w o r l d
[48 65 6c 6c 6f 20 57 6f 72 6c 64]

إذا كنت مرتبكًا ، فسيظهر ما ورد أعلاه بالسداسي عشري. راجع جدول ascii (عفواً لايمكن عرض الروابط في الإرشيف) لتحويل الأحرف إلى بايت. لقد استخدمت ست عشرية لأن نطاق البايت بالعدد العشري هو من 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. سيساعد أيضًا مخطط الاتجاه أدناه.
عفواً لايمكن عرض الروابط في الإرشيف

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 #. في المثال أدناه ، لا أتعامل مع تذييل الحزمة. بدلاً من ذلك ، أهملها (حيث أنني لست بحاجة إلى ذلك - إنها حقًا جيدة فقط لتصحيح أخطاء مصدر الحزمة عبر الشبكة كملف رزم).
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 ، فراجع الطريقة التي يتعامل بها خادمك مع قراءة الحزمة وكتابتها. للحصول على أمثلة أفضل لنظام المقبس ومعالجة الرزم ، راجع مصدري: phoenix. (عفواً لايمكن عرض الروابط في الإرشيف)له مشاكله ، لكنه موثق بالكامل وسهل التعلم منه. آمل أن يكون هذا الدليل قد ساعدك في فهم المزيد حول كيفية عمل الشبكات والحزم مع conquer online. إذا كان لديك أي أسئلة أو طلبات للحصول على تفسيرات أفضل ، فيرجى إخبارنا بذلك.

Links
عفواً لايمكن عرض الروابط في الإرشيف
عفواً لايمكن عرض الروابط في الإرشيف
عاش استمر يا هندسه

Marshmello
2021-12-12, 11:47 PM
متشكر جدا

kingofkingdom12
2022-01-07, 05:10 PM
شكرا

shekovevo21
2022-03-06, 02:50 AM
تتتات

Mario[GM]
2022-04-23, 04:40 PM
شكرا

Mohamed gshsv
2022-04-25, 07:46 AM
جميل

Drugs
2022-05-04, 10:26 PM
عاش والله

AmeerHamdii
2023-04-25, 04:54 AM
Thx

swil00
2023-05-06, 09:11 PM
1

etetoo2015
2023-05-08, 10:57 AM
Tyyyy

xiaoyu9527
2023-05-15, 03:33 PM
look

youssef12345
2023-05-27, 03:12 PM
Ty

4372351
2023-07-13, 04:05 AM
عاش ياوحش

yousry
2023-07-14, 02:48 PM
Thank you

mahmoud546
2023-10-13, 06:06 PM
شكرا

memokala
2023-10-13, 06:11 PM
شكرااا

kinggame2023
2023-11-04, 11:32 AM
تسلم

eyouunis
2023-11-29, 05:37 AM
تسلم ياغالي

LuffySan
2024-06-05, 11:27 AM
3a4

محمد عابد
2024-11-07, 02:35 PM
بالتوفيق يامحترم

ali.fanky
2024-11-14, 01:40 PM
شكرا

mohamedabdo
2025-01-10, 10:29 AM
عاش

elkholasa
2025-01-15, 09:09 AM
1111