ورود

View Full Version : سوال: دانلود بایت مشخصی از فایل



امین مستانی
دوشنبه 20 شهریور 1391, 15:33 عصر
سلام

یک سوالی فکر منو مشغول کردم میخواستم ببینم میشه با VB6 پیاده سازیش کرد یا نه .

در نرم افزار Internet Download Manager میبینید که یک فایل رو از قسمت های مختلفی دانلود میکنه و در آخر فایل هارو رو یکی میکنه (به اصطلاح به هم میچسبونه )

من میخواستم ببینم میشه این قابلیت رو در ویژوال بیسیک پیاده سازی کرد که یک قسمت مشخصی از یک فایل رو دانلود کنه یا نه ....

92655

دوستان اگه نظری دارید بگید .....

ممنون

just4froum
دوشنبه 20 شهریور 1391, 17:12 عصر
با سلام :

بله شما هم می توانید این کارو با inet انجام دهید و هم با winsock.

که inet رو پیشنهاد می کنم چون یکسری دستورات داره که کارو راحت تر میکنه.

من دقیقا بلد نیستم اگر دوستان تا چند روز دیگر جواب ندادند نمونه ای برای شما قرار می دهم.

امین مستانی
دوشنبه 20 شهریور 1391, 19:25 عصر
با سلام

ممنون از جوابتون
اگه نمونه سورسی دارید قرار دهید

با تشکر

بهروز عباسی
دوشنبه 20 شهریور 1391, 22:18 عصر
درود
دوست عزیز شما با استفاد از Range در header های HTTP می تونید در هر اتصال بخشی از فایل رو دانلود کنید.
برای این کار آشنای با HTTP و Multi Threading الزامی (بهتره بلد باشی) هستش.

موفق باشی

امین مستانی
سه شنبه 21 شهریور 1391, 09:41 صبح
ممنون آقای عباسی میتونید یک مقاله یا یک سایت در این رابطه معرفی کنید ؟؟

در گوگل چیز زیادی پیدا نکردم

ممنون

امین مستانی
چهارشنبه 22 شهریور 1391, 23:01 عصر
دوستان عزیز کسی نظری یا نمونه سورسی نداره ؟؟؟

بهروز عباسی
چهارشنبه 22 شهریور 1391, 23:19 عصر
دوستان عزیز کسی نظری یا نمونه سورسی نداره ؟؟؟
درود
کمی درباره نحوه کارکردن HTTP در VB تحقیق کن
من این برنامه رو با دلفی پیاده سازی کردم(تقریباً) و با Vb چنین کاری نکردم اگه نمونه گیر آوردم میذارم اینجا

موفق باشی

امین مستانی
پنج شنبه 23 شهریور 1391, 12:17 عصر
با سلام

آقای عباسی من این نمونه رو پیدا کردم

http://www.vbforums.com/showthread.php?334645-Winsock-Making-HTTP-POST-GET-Requests

لطفا ببینید همین مد نظرتونه ؟؟؟

بهروز عباسی
پنج شنبه 23 شهریور 1391, 19:58 عصر
درود

لطفا ببینید همین مد نظرتونه ؟؟؟
من vb ندارم
اما فکر نکنم
لینک زیررو ببین شاید در این مورد کمکت نکنه اما برای نوشتن چنین برنامه هایی کمکت می کنه!
http://www.vbforums.com/showthread.php?310235-VB-Downloader.-Download-files-from-the-web-with-prog-bar.

این توضیحات هم بخون
Using HTTP Ranges to resume resume aborted downloads (http://www.west-wind.com/weblog/posts/2004/Feb/07/Using-HTTP-Ranges-to-resume-resume-aborted-downloads)


یک دانلودر به زبان دلفی (http://barnamenevis.org/showthread.php?298057-%DB%8C%DA%A9-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF%D8%B1-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%AF%D9%84%D9%81%DB%8C)

موفق باشی

بهروز عباسی
پنج شنبه 23 شهریور 1391, 20:14 عصر
درود

لطفا ببینید همین مد نظرتونه ؟؟؟
من vb ندارم
اما فکر نکنم
لینک زیررو ببین شاید در این مورد کمکت نکنه اما برای نوشتن چنین برنامه هایی کمکت می کنه!
http://www.vbforums.com/showthread.php?310235-VB-Downloader.-Download-files-from-the-web-with-prog-bar.

این توضیحات هم بخون
Using HTTP Ranges to resume resume aborted downloads (http://www.west-wind.com/weblog/posts/2004/Feb/07/Using-HTTP-Ranges-to-resume-resume-aborted-downloads)


یک دانلودر به زبان دلفی (http://barnamenevis.org/showthread.php?298057-%DB%8C%DA%A9-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF%D8%B1-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%AF%D9%84%D9%81%DB%8C)

موفق باشی

just4froum
پنج شنبه 23 شهریور 1391, 20:36 عصر
با سلام مجدد :

راستش من منتظر بودم دوستان حرفه ای تر جواب بدن که حتما خیلی بهتر و کامل تر از من می گفتند اما متاسفانه کم لطفی کردن. :ناراحت:

دانلود با استفاده از Winsock

فرض کنید فایلی که می خواهید دانلود کنید آدرسش هست : http://TargetSite.com/TargetFile.FileType

در اینصورت مراحل اینجوری میشن :

1- اول به سرور کانکت میشید :

winsock.connect "TargetSite.com",80

2 - بعد از کانکت شدن هیدر دانلود رو می فرستید بدین صورت :

Dim Data As String
Data = "GET /TargetFile.FileType HTTP/1.1" & vbCrLf
Data = Data & "User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.772.0 Safari/535.1" & vbCrLf
Data = Data & "Host: TargetSite.com" & vbCrLf
Data = Data & "Accept: */*" & vbCrLf
Data = Data & "Accept-Language: en-US,en;q=0.8" & vbCrLf
Data = Data & "Range: bytes=100-" & vbCrLf & vbCrLf
winsock.SendData Data

حالا توجه کنید که یه جای کد نوشته :

Range: bytes=100-

شما جای 100 اون بایتی رو بگذار که می خوای از اون شروع به دانلود کنه اگر هم می خوای فرضا از 100 تا 200 دانلود کنه اینجوری بنویس


Range: bytes=100-200

اگر هم می خوای از اول شروع به دانلود کنه اصلا خط بالا رو ننویس ولی توجه کن که باید یک دانه & vbCrLf به خط بالاییش اضافه کنی ( همیشه خط آخر باید 2 تا vbCrLf داشته باشه )

امین مستانی
جمعه 24 شهریور 1391, 01:28 صبح
آقای just4froum با عرض تشکر فراوان

میشه لطفا یک نمونه سورس از این برنامه که فرمودید قرار بدید
من این رو اجرا کردم و خطا گرفتم
مسیر فایل دانلود شده کجاست ؟؟

just4froum
جمعه 24 شهریور 1391, 01:45 صبح
در قسمت DataArrival وینسوک شما باید به صورت بایتی دریافت کنید ولی اگر آشنایی ندارید از همان Inet استفاده کنید.

شما در پست یر که خودتان هم داده اید به جای
.Execute , "GET", , "Range: bytes=" & CStr(lBytesReceived) & "-" & vbCrLf

از اطلاعات بالا استفاده کنید یعنی اگر فرضا می خواهید از بایت 100 دانلود کند این شکلی بنویسید :
.Execute , "GET", , "Range: bytes=100-" & vbCrLf

پست خود شما (دانلود با استفاده از Inet و Progressbar ) (http://barnamenevis.org/showthread.php?357566-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%A8%D8%A7-Inet-%D9%88-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-Progress-Bar)

امین مستانی
جمعه 24 شهریور 1391, 02:05 صبح
واقعا ممنونم آقای just4forum

کدومشون سرعتش بیشتره ؟؟

یک نکته پیدا کردم هر 1 کیلوبایت 32 خط از یک فایل متنی هست درسته ؟؟

just4froum
جمعه 24 شهریور 1391, 02:36 صبح
واقعا ممنونم آقای just4forum
خواهش می کنم قابلی نداشت. :قلب:



کدومشون سرعتش بیشتره ؟؟

فکر نکنم تفاوت آن چنانی باهم داشته باشند ؟!!



یک نکته پیدا کردم هر 1 کیلوبایت 32 خط از یک فایل متنی هست درسته ؟؟

خیر، هر 1 کیلوبایت 1024 بایت است و در اسکی یا ( همون فایل متنی معمولی ) هر کارکتر یک بایت است و رفتن به خط بعد 2 بایت.

تعداد خط فایل به حجم آن بستگی ندارد.