ماشي يا ميم شرطه مائله محمد :) بانتظارك ان شاء الله أنت وصديقك ويشرفني وجود أخ آخر معنا خريج كلية هندسه برده.
مشروع جماعي جديد( BitTorrent Client )
بعد أن عرفنا الBencoding Types دعونا الآن نغوص في الTorrent File و نعرف ما هو شكله تفصيلاً...
أولاً
الTorrent File ككل هو عبارة عن Dictionary و ينقسم كالعادة الى مجموعة من الkeys و الvalues و ترتيبهم في الأغلب ليس مهماً
1- الجزء announce
هو الrow الذي يكون فيه الtracker url
مثال
8:announce40:udp://tracker.bitcomet.net:8080/announce
و هنا نجد أولاً ال key و هو announce و هو bencoded string من 8 حروف ثم الvalue و هي string أيضاً و هو الURL
2- الجزء created by
هو الrow الذي يوجد فيه اسم البرنامج منشئ الملف. و هو بنفس أسلوب الannounce
10:created by13:BitComet/0.59
3- الجزء creation date
هو الrow الذي يكتب فيه تاريخ انشاء الملف و يكون الvalue من نوع bencoded integer
13:creation datei1124998268e
4- الجزء info
و هو أهم جزء في الملف و يحوي المعلومات الأكثر أهمية. و هو عبارة عن Dictionary له شكلان
4,1 - في حالة الملف الواحد
و هي الحالة التي يكون فيها ملف الtorrent مرتبط بملف واحد فقط
و في هذه الحالة يتكون من
4,1,1 الجزء length أي طول الملف و هو Bencoded Integer
4,1,2 الجزء md5sum و هو جزء (إختياري) و يكون فيه 32 حرفا يعبرون عن hexadicimal MD5 check sum للملف
4,1,3 الجزء name و فيه اسم الملف و هو من نوع string
4,1,4 الجزء piece length و هو رقم يعبر عن عدد الbytes في كل جزء من المف (في الأغلب 256) من نوع integer
4,1,5 الجزء pieces و هو string مكون من 20 بايت Sha1 Hash لكل جزء في الملف مكتوبين بالتوالي.
4,2 في حالة أكثر من ملف
و هي الحالة التي يكون فيها ملف الtorrent مرتبط بأكثر من ملف
و في هذه الحالة يتكون الجزء info من التالي
4,2,1 الجزء files و هو عبارة عن List من الDictionaries و كل dictionary داخل الlist تتكون من الآتي
4,2,1,1 الجزء length مثل 4,1,1
4,2,1,2 الجزء md5sum مثل 4,1,2
4,2,1,3 الجزء path و هو عبارة عن list من الstrings كل منها يعبر عن جزء من المسار الخاص بالملف
مثال
هذا المسار dir1/dir2/file.ext
يتحول ليصبح
l4:dir14:dir28:file.exte
4,2,2 الجزء name و هنا يكتب فيه اسم الfolder الذي يحوي جميع هذه الملفات أو مايسمى الTop Most Directory
4,2,3 الجزء piece length و هو مثل 4,1,4
4,2,4 الجزء pieces و هو مثل 4,1,5
و توجد بعض الأجزاء الاختيارية مثل comment و announce list
أرجو قراءة الشرح بتمعن و السؤال فوراً عن أي جزء غير واضح
شكرا
Sr. Software Development Engineer
Hulu, LLC
My Blogs
شكرا يا bashmohandes ,
يوجد معلومات تتعلق بذلك متوفره أيضا في موقعه الرسمي ( تقريبا الرسمي ) ::
http://www.bittorrent.com/protocol.html
الحقيقه أن كل ما أقرأ أكتر عن الـ Bittorrent ... أستغرب أكتر خصوصا لما أشوف Bram Cohen ... شكله يا عيني مجنون خالص :lol: ,, شوفوا كدا ::
ما اخبار المشروع؟
في الحقيقة تولد لدي بعض الحماس .. هناك مشكلة و هي انني لم استخدم #C من قبل و لكني استخدمت جافا لفترة كافية ..
اعتقد ان اللغتين متشابهتين .. هل هناك مركز لـ API Documentation مثل http://java.sun.com/j2se/1.5.0/docs/api/index.html ؟
يعني بالعربي كدة اود الانضمام.
هل هناك طريقة معينة في التنظيم ام ان العمل لا يزال على المنتدى فقط؟
أقصد, هل تم كتابة اي شي متعلق بقرائة و كتابة الـ bencoding types مثلا؟
هذا ما كتبته حتى الآن في المشروع
و هو قارئ ملفات الTorrent و هو مجرب بنسبة 90% و يوجد 2 propeties فقط لم أكملهم و هما الcreation date و ال announce list
أما بالنسبة لجميع الproperties الأخرى فهو يقرأها بكفاءة
التعامل مع ملفات الTorrent سيكون من خلال الclass TorrenFile و طريقة استخدامها سهلة فقط
TorrentFile file = new TorrentFile("MyTorren.torrent");و سيتم قراءة الملف و تجهيز المعلومات في الProperties كلها
القارئ يعمل على جميع أنواع الtorrent سواء Single أو Multiple
ان شاء الله قريبـــاً نسخة أقوى و أيضا سيضاف أليها امكانية الكتابة
شكراً
بالنسبة للBencoded Types
ستجد أن هناك class اسمها bElement و هي الclass الbase و يرث منها 4 classes و هي bStringElement و bIntegerElement و bList و bDictionary
سيتم شرحهم بالتفصيل لاحقاً لأني مشغول حالياً
Sr. Software Development Engineer
Hulu, LLC
My Blogs
هذا الموضوع مغلق.

