PDA

View Full Version : سوال: محدودیت در بازه ی یک آرایه



m2011kh
یک شنبه 12 آبان 1392, 15:45 عصر
سلام و خسته نباشید خدمت دوستان.

برای ارسال فایل با استفاده از Winsock یک آرایه از نوع Byte داریم.و تعداد رو اینطور مشخص میکنم:
ReDim buffer(FileLen(dlg.FileName) - 1)
ولی اگر فایل بزرگ تر از حدود 230MB باشه روی همین خط کد ارور میده.

دوستان برای حل این مشکل راه حلّی جهت ارائه ندارن؟؟؟

vbhamed
دوشنبه 13 آبان 1392, 07:58 صبح
سلام
البته با اين دستور شما آرايه از نوع Variant ايجاد ميشه كه چون هر عنصرش 16 بايتي هست نزديك 4gb رم نياز داره اما اگر عبارت As Byte رو آخرش بزاريد خيلي بيشتر از اينم مي‌تونيد اختصاص بدين
ولي در كل اين روش اصولي نيست و بهتره فايلتون رو بخش بخش بخونيد و منتقل كنيد نه اينكه يكدفعه كل فايل رو بخونيد

m2011kh
دوشنبه 13 آبان 1392, 21:36 عصر
البته متغیر قبلا از نوع Byte تعریف شده و ما با استفاده از این کد اون رو ReDim میکنیم.
ولی باز هم همین مشکل رو دارم.

البته در مورد تکه تکه کردن فایل ها و ارسالشون در برخی موارد کمی ابهام دارم و احتمال میدم فایل های ارسالی اونقدر هم بزرگ نباشن و حداکثر 700MB حجم داشته باشن.
به هر حال اگه راه مناسبی رو در نظر دارین حتما بگین.

vbhamed
سه شنبه 14 آبان 1392, 06:01 صبح
سلام
خب 700 مگابايت هم حجم كمي نيست حتي وقتي قراره 10 مگابايت ارسال بشه باز هم بهتره تيكه تيكه ارسال بشه، مشكل و ابهامتون براي تيكه كردن فايل چيه ؟

m2011kh
پنج شنبه 16 آبان 1392, 16:49 عصر
خب اگه بخوام تیکه تیکه کنم واقعا درد سر زیاد میشه.اول جدا کردنش و شماره گذاری و ارسال و دریافت و کنار هم گذاشتشون و ...

خلاصه خیلی اذیت کننده میشه.
MMD

Mohammad_dn
جمعه 17 آبان 1392, 17:00 عصر
اونقدریم که فکر میکنید سخت نیست....من قبلا یه بار فایل رو تیکه تیکه کردم...اما الآن یادم نیست سورسشو کجا گزاشتم...وگرنه براتون میزاشتم

m2011kh
جمعه 17 آبان 1392, 21:39 عصر
میدونم زیاد سخت نیست،امّا از هر 1000 فایلی که ممکنه تو برنامه ارسال یشه یکیش ممکنه حجم اونچنانی داشته باشه.به خاطر همین نمیارزه روش کار کنم.

MMD

FastCode
جمعه 17 آبان 1392, 21:42 عصر
این چیزهایی که گفتید رو نیاز نداره.فقط کافیه تکه تکه بخونید و تکه ها رو به ترتیب ارسال کنید.

m2011kh
دوشنبه 20 آبان 1392, 20:38 عصر
سلام و خسته نباشید.
اگه شماره گذاری نکنیم.اگه مثلا داده ای ارسال نشه و یا در ارسالش مشکلی پیش بیاد اون موقع در نهایت بخاطر مشکل در یک بسته کل ارسال و دریافت مختل میشه.

FastCode
دوشنبه 20 آبان 1392, 21:01 عصر
سلام و خسته نباشید.
اگه شماره گذاری نکنیم.اگه مثلا داده ای ارسال نشه و یا در ارسالش مشکلی پیش بیاد اون موقع در نهایت بخاطر مشکل در یک بسته کل ارسال و دریافت مختل میشه.

۱.TCP این موضوع رو مدیریت میکنه.
۲.اگر قرار باشه چنین اتفاقی بیافته درهر صورت اتفاق میافته.

در صورتی که اطلاعات نصفه منتقل شد در ارتباط بعدی سرویس گیرنده میتونه حجمی که دریافت کرده رو به سرور اطلاع بده تا بقیش رو بگیره.