PDA

View Full Version : ارسال فایل تحت شبکه



K.Mohammadreza
یک شنبه 20 دی 1388, 13:57 عصر
با سلام
برنامه ای برای ارسال فایل تحت شبکه با استفاده از کامپوننت های Clientsocket, ServerSocket, fileSocket نوشته ام مشکل اینجاست که اگر در حین ارسال فایل توسط یک کلاینت کلاینت دیگری فایل ارسال کند فایلی که توسط کلاینت قبلی در حال ارسال بود ناتمام میرسد و کنترل برنامه به کلاینت جدید داده می شود چگونه این مشکل را حل کنم؟

Felony
یک شنبه 20 دی 1388, 14:25 عصر
تا اونجا که یادمه باید برای هر کلاینت تو یک نخ جدا عملیات ارسال و گرفتن فایل رو انجام داد و در ضمن این سوال مربوط به بخش شبکه در دلفی میشه نه مباحث عمومی .

دلفــي
یک شنبه 20 دی 1388, 14:32 عصر
شما بايد از روش MultiThreading استفاده كنيد و خاصيت ServerType رو در حالت stTreadBlocking قرار دهيد .

K.Mohammadreza
چهارشنبه 23 دی 1388, 14:21 عصر
با تشکر از جوابهایتان
ولی لطفا بیشتر راهنمایی کنید و یک مثال بزنید

K.Mohammadreza
پنج شنبه 24 دی 1388, 06:48 صبح
لطفا کمک کنيد

K.Mohammadreza
یک شنبه 27 دی 1388, 12:13 عصر
خواهشاً کمک کنيد:ناراحت::ناراحت::ناراحت: :گریه::گریه:

K.Mohammadreza
چهارشنبه 30 دی 1388, 07:56 صبح
با سلام و عرض خسته نباشید
واقعا نمیدونم دیگه چی بنویسم
این رسمش نیست که اینجوری جواب منو بدین
خب اگر راهی به ذهنم میرسید اینجا مطرحش نمی کردم
به هرحال این آخرین پستی هست که توی این تاپیک میذارم
خواهشا جواب بدین چون فکر نکنم کسی اینقدر بابت یک موضوع بی جواب گذاشته شده باشه
حتی اگر جوابی به ذهنتان نمی رسد لااقل می توانید راه حل های پیشنهادی خودتان را ارائه کنید تا مشکلم حل شود

Mask
چهارشنبه 30 دی 1388, 09:35 صبح
با سلام خدمت دوست عزیز
مثالی از این قبیل به این علت که زیاد در موردش بحث شده دوستان تمایل جهت پاسخگویی ندارند.
دوستان به طور کامل جواب شما رو دادند. من نمی دونم مشکلتون چیه. جهت واضح تر شدن مسئله یه توضیح مختصر بنده هم میدم.
برنامه هایی از این قبیل و کلا برنامه های تحت شبکه حتما باید به صورت MultiThreading نوشته بشوند.(در مورد MultiThreading در سایت کلی مطلب و مثال هست).
ابم به این دلیله که زمانی که برنامه شما دارای یک Thread باشه در آن واحد میتونه به یک کلاینت پاسخ بده.
برای همین دوستان گفتند باید MultiThreading یا چند نخی استفاده کنید.
MultiThreading یعنی اینکه برای هر کلاینت و وصل شدن به اون و ارسال و دریافت یک نخ جدا از برنامتون به سیستم عامل بفرستید تا سیستم عامل عملی رو جهت رسیدن به دستور سیستم بعدی لغو نکنه.
امیدوارم متوجه شده باشی
.موید باشید.

K.Mohammadreza
چهارشنبه 30 دی 1388, 13:31 عصر
با سلام خدمت دوست عزیز
مثالی از این قبیل به این علت که زیاد در موردش بحث شده دوستان تمایل جهت پاسخگویی ندارند.
با سلام
به نظر من اين دليل خوبي نسيت که به دليل اينکه قبلا جواب داده اند ديگر راهنمايي انجام نشود لااقل آدرس پست هايي که به اين موضوع پرداخته اند گذاشته شود.



ابم به این دلیله که زمانی که برنامه شما دارای یک Thread باشه در آن واحد میتونه به یک کلاینت پاسخ بده.
برای همین دوستان گفتند باید MultiThreading یا چند نخی استفاده کنید.
MultiThreading یعنی اینکه برای هر کلاینت و وصل شدن به اون و ارسال و دریافت یک نخ جدا از برنامتون به سیستم عامل بفرستید تا سیستم عامل عملی رو جهت رسیدن به دستور سیستم بعدی لغو نکنه.
امیدوارم متوجه شده باشی
.موید باشید.

چگونه اينکار را انجام بدم من طريقه ساخت برنامه چند خطي را بلدم اما زماني که برنامه گيرنده فايل را multi theard ميکنم ديگر هيچ کلاينتي قابليت اتصال به سرور را نداره يعني برنامه امکان دريافت فايلش را عملا از دست ميده. من نميخوام اينطوري بشه که فکر ميکنم بدليل اينکه ادرس آي پي ثابته و پورت ارسال و دريافت فايل هم ثابته برنامه گيرنده هنگ ميکنه و کلاينت ها هم ديگر امکان اتصال و ارسال فايل را ندارند. بنابراين اگر فقط کلاينت متوجه بشه که يک کلاينت ديگر در حال ارسال فايله برام کافيه. من نميخوام که برنامه بتونه در يک زمان چند فايل دريافت کنه من ميخوام برنامه تا زماني که در حال دريافت فايل از يک کلاينته ديگر کلاينت ها منتظر باشند و پيغام "يک برنامه ديگر در حال ارسال فايل است را دريافت کنند"

با تشکر

K.Mohammadreza
یک شنبه 04 بهمن 1388, 13:07 عصر
چرا جواب نميدين!!!!!!!!!!!!!!!!!!

Felony
یک شنبه 04 بهمن 1388, 18:04 عصر
بابا وقتی کسی جواب نمیده یعنی مبحث پیچیده هست و کسی حال نداره بشینه اینجا چند ده یا چند صد خط به شما آموزش بده ، بعد هم موج سوالاتی که براتون پیش میاد رو پاسخ گو باشه ، اگر زبانتون خوب هست تو سایت های خارجی کلی مطلب در این مورد هست ، اگر هم خوب نیست پس سعی کنید روی زبانتون کار کنید و گرنه بیش از این ها به مشکل بر میخورید .

K.Mohammadreza
شنبه 10 بهمن 1388, 07:16 صبح
راه حلشو پيدا کردم و بسيار عالي جواب ميده بعدشم چند صد خط کد نميخواد با کمتر از 20 خط کد مشکل حل شد