ايران ويج

نسخه‌ی کامل: روش کار دانلود منیجر
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام میخواستم بدونم اینکه دانلود منیجر ها فایلو چند تکه میکنن و از سرور در یک زمان بایتهای مختلفی از فایل رو دانلود میکنن چطوره ؟

مثلا یک فایل 1 مگی رو به 4 بخش
که در یک زمان شروع به دریافت اون 1 مگ از 4 نقطه از همون فایل ؟
کسی کدی داره؟
سلام
همه چی بر ميگرده به هدر درخواست خوندن فايل و البته قابليت قبول کردن محدوده هاست
با قابليت محدوده گذاری هاست ميتونی درخواست بفرستی که از چه بايت تا چه بايتی رو ميخوای بخونی
مثلاً بخوای يه فايل 100 بايتی رو از چهار قسمت بخونی به اين صورت درخواست فرستاده ميشه

اول بايد حجم فايل رو بدونی تا بتونی پارت بندی کنی
پس اول يه درخواست خوندن فايل ميفرستی:

درخواست:
کد:
GET /dler/1251412407-file.zip HTTP/1.1
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: www.parsprog.com

جواب درخواست:
کد:
HTTP/1.1 200 OK
Date: Fri, 18 Sep 2009 00:02:29 GMT
Server: Apache
Last-Modified: Thu, 27 Aug 2009 22:33:27 GMT
Accept-Ranges: bytes
Content-Length: 100
Content-Type: application/zip

ما فقط به هدر نياز داريم پس بعد از گرفتن هدر سوکت رو ميبنديم
خوب حالا از خط content-length ميشه حجم کلی فايل رو ديد
اطلاعات ديگه هدر هم به درد ميخوره مثل اولين خط 200 OK که نشون ميده درخواست با موفقيت ارسال شده و همچين فايلی تو اين مسير وجود داره
خط accept-ranges هم که مشخصه نشون ميده که قابليت ريزوم هست

بعد بايد به تعداد پارت سوکت لود کنيم که هر سوکت بخشی که مشخص شده رو ميخونه
چهار تا سوکت داريم پس حجم کلی فايل که 100 هست رو تقسيم بر چهار ميکنيم

سوکت اول:
کد:
GET /dler/1251412407-file.zip HTTP/1.1
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: www.parsprog.com
Range: bytes=0-25


سوکت دوم:
کد:
GET /dler/1251412407-file.zip HTTP/1.1
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: www.parsprog.com
Range: bytes=25-50


سوکت سوم:
کد:
GET /dler/1251412407-file.zip HTTP/1.1
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: www.parsprog.com
Range: bytes=50-75


سوکت چهارم:
کد:
GET /dler/1251412407-file.zip HTTP/1.1
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: www.parsprog.com
Range: bytes=75-100

ميبينيم که وجه تفاوت همه هدر ها تنها توی Range: هست
خود Range هم دو تا پارامتر داره اولين شروع دومی که با - جدا ميشه پايان محدوده ديتا رو مشخص ميکنه
پارامتر دومی اختياری هست که اگه مقدار نديم حجم کلی رو در نظر ميگيره

بعد از فرستادن هر پکت، هاست ديتا که درخواست کرده بوديم رو بر ميگردونه که ديتا هر پارت رو يک جا ذخيره ميکنيم و در آخر که کار همه پارت ها به پايان رسيد همه ديتا ها با هم جمع ميشن و شما ميتونيد فايل خودتون رو ايجاد کنيد.

نکته: اين فايل با اين مسير فقط يک مثال بود و همچين فايلی با اين اندازه توی هاست وجود نداره
بفرمایید تقدیم به شما

نویسنده : techtrans@dreamwiz.com
آقای crazy ممنون اما این کد بیسیکش کاربردیه
من که از اینها دستگیرم نشد البته کلیات رو فهمیدم و ممنون حالا سورس پست بعدیو گرفتم برم ببینم چیه
ممنون
با سلام وسپاس فراوان
می خواستم ببینم وقتی روی لینک مرورگر کلیک می کنیم دانلود منیجر مثلا idm جطوری می فهمه و فعال میشه ممنون
معمولا پلاگین مینویسن برای اون مرورگر
ولی idm به نظر میاد کل پکت های http رو چک میکنه