PDA

View Full Version : سوال: تنظیم فاصله بین ارسال داده ها در socket programming



amin_sltny
سه شنبه 12 فروردین 1393, 10:22 صبح
سلام دوستان من با کلاس scoket در سی شارپ برنامه ای نوشته ام اما توی این برنامه مشکلی دارم که داده ها در بعضی مواقع پشت سر هم قرار می گیرند در نتیجه داد ها تجزیه و تحلیل نمی شوند در سمت کلاینت برای حل این مشکل چه راهی پیشنهاد میدهید من در سمت کلاینت قبل از ارسال داده یه thread.sleep(2000) گذاشتم ولی بازم در بعضی از مواقع این مشکل به وجود میآید

hamid_hr
سه شنبه 12 فروردین 1393, 10:53 صبح
خب اینطوری کار کن
سیستم 1 اطلاعاتو میفرسته سیستم 2 دریافت میکنه پردازش میکنه به سیستم 1 یک پیغام میفرسته که ادامه رو بفرست
سیستم 1 ادامه اطلاعات رو میفرسته

hadi0x7c7
سه شنبه 12 فروردین 1393, 13:49 عصر
فکر کنم توی سوکت ها بشه بصورت blocking و non blocking کارا رو انجام داد ولی خودم تاحالا تجربه این نداشتم، فکر کنم این موضوع دقیقا همون چیزی هست که شما میخواین.

amir001
سه شنبه 12 فروردین 1393, 15:41 عصر
سوکت آرایه بایتی میفرسته، کاری هم نداره که فایل میفرستی یا رشته یا چیز دیگه.. تاخیر و این چیرها هم مطرح نیست چون تاخیر های توی ارسال تحت شبکه و .. هم کم و زیادشون میکنه..

شما باید یک راه برای فریم بندی داده هات داشته باشی

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

file::18::gh3g2f2hg43nbfgf3h

برای ارسال رشته های معمولی میتونی از writeline و readline استفاده کن، یعنی یک خط یک خط توی سوکت بنویس و یک خط یک خط بخون.


و راه های بیشمار دیگری