PDA

View Full Version : سوال: مشکلی کوچک ولی مهم در ارسال فایل با Winsock



m2011kh
شنبه 28 بهمن 1391, 19:17 عصر
سلام دوستان.
من تو برنامه ام فایل رو به صورت باینری میخونم و اون رو با استفاده از وینساک ارسال میکنم و در مبدأ به صورت append یه فایل باز میکنم و اطلاعات رو داخلش میریزم و همون فایل رو دوباره تشکیل میدم.
خب اینجا یه مشکل دارم.اگه تمام یک فایل رو درون یه متغیر قرار بدم و اون متغیر رو ارسال کنم وینساک خودش فایل رو به قسمت های کوچک تقسیم میکنه و ارسال میکنه.و در مبدأ در دفعات زیاد رویداد DataArrival اجرا میشه.
خوب در این بین تا وینساک اطلاعات رو به قطعات کوچک تبدیل کنه در فایل های زیر ده مگا بایت چند ثانیه و در فایل های بالای ده مگا بایت چند دیقه طول میکشه.

خب مشکل انجاست که وقتی فایل رو ارسال میکنم در مبدأ اجازه دریافت میگیره و کاربر وقتی اوکی میکنه برای فایل های زیر ده مگابایت سی ثانیه طول میکشه و یه دفعه پروگرس باز پر میشه.

اولش خودم به سرم زد که خودم تفکیک فایل به قطعات کوچک تر رو انجام بدم و آروم آروم ارسال کنم.فکر بدی هم نیست.

ولی میخواستم ببینم راهی دیگه ای برای حل این مشکل نیست؟؟؟اگه هست که الکی خودمو اذیت نکنم.

فعلا خدا نگهدار.

m2011kh
شنبه 28 بهمن 1391, 20:35 عصر
دوستان یه مشکل دیگه هم الان پیش اومد.
همین الان این تیکه کد رو نوشتم برای تقسیم کردن فایل به قسمت های کوچکتر ولی همه جاش درست کار میکنه جز اینکه فایلی که رو در برنامه Input میکنم با فایل خروجی همسان نیست.یعنی یه چیزی حدود 1000بایت بیشتره.هر چی به کد هام دقت کردم مشکلشو نفهمیدم.

ممنون میشم یه راهنمایی کنید.
کد:
Dim l As String
Open "C:\MMD.bmp" For Binary As #1
Dim k As String
k = Input(LOF(1), 1)
Close #1
Do Until k = Empty
DoEvents
If Len(k) = 550 Or Len(k) < 550 Then
l = l + Trim(k)
k = Empty
GoTo l
End If
l = l + Trim(Right(k, 500))
k = Trim(Left(k, Len(k) - 500))
l:
Form1.Caption = Len(l)
Loop
Open "C:\02.bmp" For Append As #2
Print #2, l;
Close #2
Form1.Caption = "END"

MMD

vbhamed
یک شنبه 29 بهمن 1391, 09:41 صبح
سلام

براي كار با فايلهاي باينري بايد متغيرتون از نوع بايت باشه نه رشته اي
تيكه كد زير يك فايل رو كپي مي‌كنه
Dim k() As Byte

Open "c:\file1.exe" For Binary As #1
Open "c:\file2.exe" For Binary As #2

ReDim k(LOF(1) - 1)
Get #1, , k

Put #2, , k
Close

m2011kh
یک شنبه 29 بهمن 1391, 20:11 عصر
ممنون در این مورد تقریبا مشکل حل شد ولی در مورد سوال اولم دوستان راهی سراغ ندارن؟؟؟

m2011kh
سه شنبه 01 اسفند 1391, 16:53 عصر
دوستان مهم نست چه نظری دارید نظراتتون رو بگید.حتما مفید خواهد بود.