ورود

View Full Version : چگونه سرعت دانلود فایل از FTP را بالا ببریم؟



BORHAN TEC
شنبه 14 بهمن 1391, 13:03 عصر
سلام :قلب:

من یک FTP دارم که باید بتوان فایلهایی را از آن دانلود کرد. مشتریان ما همیشه از سرعت کم دانلود شکایت می کنند. البته سرعت دانلود با نرم افزارهایی مثل IDM خیلی بالاست ولی مشکل اینجاست که فقط برنامه ای که من می نویسم باید عملیات دانلود را انجام دهد. یکی از مسائل مهم این است که اگر این کار را با Indy انجام دهم قابلیت Resume را دارم ولی سرعت دانلود پایین است و اگر این کار را با کامپوننت های Clever Internet Suite انجام دهم سرعت دانلود نسبت به Indy بالاتر است ولی قابلیت Resume ندارد! از طرفی فایلهایی که در سرور ما است حجم بالایی دارند (نزدیک به یک گیگابایت!).

در حالت کلی من به دنبال روشی هستم که هم قابلیت Resume را به من بدهد و هم سرعت دانلود بالایی داشته باشد. آیا دوستان روش مناسبی را برای این کار سراغ دارند؟

با تشکر از شما دوستان...

Mask
شنبه 14 بهمن 1391, 13:15 عصر
آیا روشی که idm استفاده میکنه ، برای شما قابل قبوله؟

BORHAN TEC
شنبه 14 بهمن 1391, 13:17 عصر
کاملاً قابل قبوله ولی قابلیت Resume هم نیاز دارم. Clever Internet Suite هم از همون روش استفاده میکنه ولی قابلیت Resume نداره و یا شایدم من بلد نیستم پیاده سازیش کنم.

Mask
شنبه 14 بهمن 1391, 13:23 عصر
آیا ftp شما دارای گزینه های اهراز هویت هست؟
آیا میتوانید از http عملیات دانلود رو انجام بدهید؟یا حتما باید از روی ftp باشد؟

BORHAN TEC
شنبه 14 بهمن 1391, 13:24 عصر
حتماً باید با FTP این کار انجام بشه. در ضمن یوزر و پس هم داره و فقط برنامه خودم باید اونها رو بدونه!

delphidark
شنبه 14 بهمن 1391, 14:52 عصر
درود
دوست عزیز بنا به دلایل متعددی که از حوصله این تاپیک خارج هست معمولا در هر از مسیر اینترنت محدودیت های سرعت روی یک کانکشن TCP اعمال میشه ، بنابراین راه رسیدن به سرعت بیشر و استفاده از حداکثر پهنای باند این هست که از چند کانکشن هم زمان استفاده کنیم.
در کلاینت HTTP از مجموعه indy در هر request یک property به نام Range وجود داره که به کمک اون می تونیم یک اتصال رو به چند اتصال بشکنیم
اما در مورد idFTP حتی تا آخرین ورژن که ورژن 10 هست چنین پیاده سازی وجود نداره (تا جایی که بنده اطلاع دارم)

اما همونطور که اشاره کردید ما یک property به نام AResume داریم که قابلیت resume رو به فرمان Get اضافه میکنه .
اگر تا به حال به پیاده سازی های ftp در indy دقت کرده باشید حتما طرز کار این resume رو هم می دونید ، در یک جمله ساده indy پروپرتی position رو از Stream که ما به عنوان Destination مشخص کردیم میگیره و به عنوان محدوده آغازین range قرار میده ، طول رنج هم به صورت پیشفرض 350 بایته و باز این روند تکرار میشه ....

حالا این دیگه به خود شما بستگی داره ، می تونی تابع Get رو Override کنی که رنج رو به صورت دستی بگیره یا اینکه با position تو Destination بازی کنی .

{قول داده بودم دیگه تو برنامه نویس پست ندم اما سوال قشنگی بود}

Mask
شنبه 14 بهمن 1391, 15:22 عصر
{قول داده بودم دیگه تو برنامه نویس پست ندم اما سوال قشنگی بود}
چرا پس؟:قلب:
مشکل شما یا گاهی از دوستانی که دیگه به برنامه نویس نمیاند یا دوست ندارند دیگه پست بدهند در برخورد متعصبانه با این سایت هستش. و این دلیل رو به سردی رفتن این ارتباط میشه.
به نظر من بهتره سایت برنامه نویس رو هم مثل بقیه سایتهای عادی ببینیم و باهاش برخورد کنیم. تا چنین دلسردی هایی به وجود نیاد.
البته دوست ندارم این بحث رو ادامه بدم و تاپیک رو به انحراف بکشونم.
در ضمن از این مدل سوال قشنگها هم من خیلی دارم اما کسی نیست جواب دهد.:لبخند:
و در مورد ادامه جواب سوال اقا شاهین.
دقیقا همین کاری رو که این عزیز گفتند باید انجام داد.
یعنی در چند کانکشن و در هر کانکشن ابتدا و انتهای مشخص اون استریم رو باید دانلود کرد و دست آخر این استریمهای تکه شده رو به هم چسبوند.
دقیقا کاری که idm میکنه.
من در حال نوشتن این برنامه هستم.
اگه تموم شد میزارمش اینجا.

Mask
دوشنبه 16 بهمن 1391, 20:00 عصر
آقا پوستمون 2 روزه کنده شد.
همون روز اولا یه برنامه عین Idm نوشتم. مالتی کانکشن. فقط رو Http.
چون شما گفته بودید رو Ftp میخواهید کار کنید.
خیلی ور رفتم با کلاسهای TFTP.
اما هر کاری کردم نشد. البته میشدا : اما یکم سوادم کم بود . چون باید کلاسهای TFTP رو Overide میکردم. که زیاد وارد نبودم.
تا بالاخره بعد کلی تحقیق متوجه شدم . این ضعف در FTP مجموعه Indy هست . و اگه کسی میخاد باید دستی رفعش بکنه ، که خیلی سخت میشه.
مجبور شدم قید Indy رو زدم و رفتم سراغ کامپوننتهای دیگه . که بالاخره مجموعه کامپوننتهای overbyte (http://www.overbyte.be/frame_index.html) رو پیدا کردم. که فوق العاده بود.
همه چیز داره.
هم مالتی پارت ، هم مالتی ترد و همه چیز.
گفتم که این مجموعه رو معرفی کنم. و ازش استفاده کنید. سرعت واقعا خوبی هم داره.
من با نسخه 7 کار کردم.