سلام
همه چی بر ميگرده به هدر درخواست خوندن فايل و البته قابليت قبول کردن محدوده هاست
با قابليت محدوده گذاری هاست ميتونی درخواست بفرستی که از چه بايت تا چه بايتی رو ميخوای بخونی
مثلاً بخوای يه فايل 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 هم دو تا پارامتر داره اولين شروع دومی که با - جدا ميشه پايان محدوده ديتا رو مشخص ميکنه
پارامتر دومی اختياری هست که اگه مقدار نديم حجم کلی رو در نظر ميگيره
بعد از فرستادن هر پکت، هاست ديتا که درخواست کرده بوديم رو بر ميگردونه که ديتا هر پارت رو يک جا ذخيره ميکنيم و در آخر که کار همه پارت ها به پايان رسيد همه ديتا ها با هم جمع ميشن و شما ميتونيد فايل خودتون رو ايجاد کنيد.
نکته: اين فايل با اين مسير فقط يک مثال بود و همچين فايلی با اين اندازه توی هاست وجود نداره