PDA

View Full Version : تشخیص خروج Client



sjhosseini
دوشنبه 30 اردیبهشت 1387, 11:29 صبح
سلام
تو یک برنامه Client/Server (برای نمونه یک برنامه Chat) سیستم سرور چطور می تونه متوجه خروج ناگهانی یک Client بشه منظورم خروج کلاینت بدون عملی شبیه Sing out
البته چک کردن کلاینتها در فواصل زمانی رو انجام دادم و نتیجه هم داد .ولی فکر کنم اینکار باعث افزایش CPU Usage بشه.
دوستان اگه راه بهتری دارن ممنون میشم کمک کنن.

ASKaffash
دوشنبه 30 اردیبهشت 1387, 13:35 عصر
با سلام
با استفاده از Soucket Programing کافی است هنگام بسته شدن فرم موردنظر در Client از طریق پورت فی مابین اطلاع به برنامه روی Server داده شود

top7news
دوشنبه 30 اردیبهشت 1387, 15:44 عصر
سلام
دوست عزیز sjhosseini ممنون میشم اگه روشهایی که استفاده کردی و یه کم کاملتر توضیح بدی چون منم به جواب این سئوالت نیاز دارم

با استفاده از Soucket Programing کافی است هنگام بسته شدن فرم موردنظر در Client از طریق پورت فی مابین اطلاع به برنامه روی Server داده شود

در مورد soucket programming برای این کار هم اگه میشه کاملتر توضیح بدین و در صورت امکان با مثال یا توضیح باشه . ممنون

sjhosseini
دوشنبه 30 اردیبهشت 1387, 17:35 عصر
با سلام
با استفاده از Soucket Programing کافی است هنگام بسته شدن فرم موردنظر در Client از طریق پورت فی مابین اطلاع به برنامه روی Server داده شود

خوب اگه فرم كلاينت درست و طبق روال بسته ميشد كه مشكلي نبود
مشكل زماني پيش مياد كه برنامه كلاينت ناخواسته بسته بشه براي مثال رفتن برق-هنگ كردن برنامه و ...
مثل زماني كه شما بدون signOut مسنجر رو ببندي و اين باعث ميشه ID شما تا مدتي توي ليست ديگرا Online باشه در صورتيكه شما Offline هستيد.
شايد همون راه حل خودم بهتر باشه

top7news
دوشنبه 30 اردیبهشت 1387, 18:22 عصر
خوب دوست عزیز همون راه حل خودت و که میگی ، همونو بذار که بقیه هم استفاده کنن.
مگه اینکه بخوای فقط کار خودت راه بیافته

رضا عربلو
دوشنبه 30 اردیبهشت 1387, 18:24 عصر
من از socket programming زیاد سر رشته ندارم. ولی
در دات نت ریموتینگ یک روش برای کنترل lifetime آبجکت های که در سمت سرور ایجاد می شوند وجود دارد به نام Lease Sponsorship، و نحوه کار آن به این صورت است که یک طول عمر اولیه برای هر remote object در نظر گرفته می شود و وقتی که این زمان به پایان رسید clr نگاه می کند که آیا آبجیکت ما sponsorی دارد یا نه و تا وقتی که یک آبجیک sponsor برای remote object ما وجود داشته باشد remote object گاربیج نمی شود و زمان lifetime ان تمدید می شود. و نکته جالب قضیه این است که این آبجیکت اسپانسور می تواند در سمت کلاینت و یا سرور تعریف شود.

گفتم شاید مفید باشد.

razavi_university
دوشنبه 30 اردیبهشت 1387, 23:57 عصر
با توجه به مطالبي كه جناب عربلو گفتند اگه دقت كرده باشيد Yahoo Messenger هم از روش مشابهي استفاده مي‌كنه يعني اگه كسي ناگهاني بدون SignOut خارج بشه تا چند دقيقه بعدش در ليست بقيه چراغش روشنه
يعني yahoo در فواصل زماني مشخصي كه شما Idle هستيد و پيغامي نمي‌فرستيد براي Messenger شما پيغامهايي ارسال مي‌كند اگر Messenger شما پاسخ داد كه پيغام Idle را در كنار چراغ شما مي نويسد و در غير اينصورت شما رو SignOut شده در نظر مي‌گيرد
اميدوارم تونسته باشم كمكي بكنم
موفق باشيد

sjhosseini
سه شنبه 31 اردیبهشت 1387, 07:53 صبح
پس یه نوع HandShaking اتفاق میفته.اگه این قابلیت تو سوکت وجود داشته باشه عالیه وگرنه باید از ارسال پیغام استفاده کنیم

arashmidos2020
سه شنبه 06 مرداد 1388, 00:08 صبح
اگر ت وسوکت پیداش کردی به ما هم بگو
ممنون