سؤال

ولقد لتنفيذ نظام الوسيطة لتبادل الملفات، ولها لتقسيم الملفات لا تختلف عن ما يحدث على تورنت، حيث يرسل ويستقبل قطع منفصلة في وقت واحد من مصادر VARIOS. كيف يمكنني فعل ذلك؟ هل من مكتبة أو لدي لتنفيذ ملف تقسيم نفسي؟

هل كانت مفيدة؟

المحلول

وتقسيم الملفات إلى كتل دعنا نقول من 100KB لكل منهما. ثم حساب تجزئة SHA (أو بعض أخرى خوارزمية التجزئة) على كل الكتل. حتى إذا كان الملف 905KB، سيكون لديك 10 من هذه التجزئة المحسوبة.

وسيتضمن خادم ملف تعريف تجزئة لكل الملفات التي تخدمها. وهذا من شأنه ملف تعريف التجزئة يحتوي على قائمة من كافة الكتل الملف، جنبا إلى جنب مع التجزئة. حتى إذا كان الملقم يخدم ملف 905KB لدينا يسمى test.exe و. ثم سيكون لدينا ملف آخر يسمى test.exe.hashes الذي يحتوي على قائمة من 10 تجزئات من الملف.

والعميل أن تحميل ملف تعريف التجزئة، والتأكد من أن لديه كل الكتل. يمكن للعميل أن يطلب كل كتلة على حدة وبعد تنزيله، فإنه يمكن حساب تجزئة على نهايته مرة أخرى لضمان عدم وجود الفساد.

وأنت لا تحتاج إلى تقسيم جسديا الملف، تقسيم الملف هو مجرد قراءة الجزء من أن كنت مهتما كتلة الأول من ملف من نطاق البايت 0-102399، كتلة التالي من 102400 إلى 204800، وهلم جرا. حتى مجرد فتح الملف، وتسعى إلى هذا الموقف، قراءة البيانات، وأغلق الملف.

نصائح أخرى

ونظرة على تنفيذ سبليت وCONCAT (برنامج GNU).

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

وانطلاقا من اهتمام: لماذا لا مجرد تنفيذ تورنت أو شيء من هذا القبيل؟ هناك العديد من العملاء مفتوحة المصدر (أي أزوريس ) والبروتوكول هو <وأ href = "HTTP: / /www.bittorrent.org/beps/bep_0003.html "يختلط =" نوفولو noreferrer "> حقا بسيطة . وهناك أيضا مقالا قليلا الى مزيد من التفصيل ، ولكن هذا يتضمن بعض ملحقات - في شك، والمسؤول المواصفات هي دائما على حق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top