PDA

View Full Version : آموزش: بستن برنامه در تمام سيستم ها 2



amiralex
یک شنبه 08 اردیبهشت 1392, 10:02 صبح
سلام به همه

من چند وقت پيش يه سوالي پرسيدم تو اين تايپيك مبني بر اينكه چطور ميتونم برنامه ايي رو در شبكه قراردادم و يوزرهاي مختلفي از اون استفاده ميكنن رو ببندم به اينصورت كه مثلا اگه كاربري با نام علي اگه لوگين كرد و مشغوله كار با برنامه است با صدور يك پيغام برنامه رو از سيستمش ببندم.
تو اين تايپيك بود:

http://barnamenevis.org/showthread.php?385857-%D8%A8%D8%B3%D8%AA%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%D8%B1-%D8%AA%D9%85%D8%A7%D9%85-%D8%B3%D9%8A%D8%B3%D8%AA%D9%85-%D9%87%D8%A7

چند تا از دوستان راه حل هاي خوب و منطقي رو پيشنهاد دادن ولي خب بنا بر دلايلي نميشد از اون استفاده كرد بنا براين از اين روشي كه در زير ميگم استفاده كردم

در فرم لوگين برنامه وقتي كابري وارد ميشه جلوي نام كاربريش در ديتابيس يك فيلد ديگه گذاشتم و وقتي وارد برنامه ميشه عدد يك رو قرار ميده و در برنامه وقتي موقعي كه ميخواد خارج بشه در فيلد ديگه ايي عدد 2 رو درج ميكنه
در اين حالت كاربر ادمين متوجه ميشه چه كسايي در اون لحظه وارد سيستم شدند و با انتخاب اون نام كاربري ( دسترسي ادمين) و با استفاده از يه دستور شرطي ساده به اون كاربر يه پيغام فرستاده ميشه و بعد از 3 پانيه به طور خودكار برنامه كاربر مورد نظر بسته ميشه


البته ميدونم خيلي سادست. ولي خب گفتم شايد بدرد كسي بخوره

با تشكر

vbhamed
چهارشنبه 01 خرداد 1392, 13:28 عصر
سلام

اما اينطوري مشكل داره، اگر كامپيوتر كاربر توسط دكمه روي كيس ريست بشه يا برقش ناگهاني قطع بشه ديگه ادمين نمي‌دونه كدوم سيستم آنلاين هست و كدوم نه، حالا فكر كنيد اين اتفاق در شبكه اي با 50 كامپيوتر براي 20 تا از اونها بيفته

اما راهش اينه كه هم كلاينت ها در فواصل زماني مشخص آنلاين بودن خودشون رو به سرور اطلاع بدن و هم سرور در فواصل زماني مشخص آنلاين بودن كلاينتها رو استعلام كنه، براي اينكار هم مي‌تونيد از Winsock يا ايجاد فايل در يك پوشه Share شده و روشهاي ديگه استفاده كنيد

amiralex
چهارشنبه 01 خرداد 1392, 14:06 عصر
ممنونم از توجهتون

به دليل اينكه دسترسي ليميت به شبكه دارم و فقط از طريق يه درايو از نوع مپ ميتونم به پوشه ها دسترسي داشته باشم اين كار رو كردم

من براي حل اين مشكل وقتي كاربر از سيستم خارج ميشه حالا به هر دليلي ( اعم از قطع برق، و يا قطع شدن كانكشن و ...) يه مقدار مثلا رقم صفر در يه كادر قرار دادم كه مشخص ميكنه كاربر خارج شده


البته كاملا حق با شماست بعضي وقتا هم مشكل بوجود مياد كه نميدونم از كجاست و بعد از خروج كاربر عدد صفر درج نميشه كه بدونم چه كسي آنلاين هست

باز هم ممنونم از توجه شما

vbhamed
جمعه 03 خرداد 1392, 08:35 صبح
سلام

ببينيد، مثلا كلاينت هر 10 ثانيه يكبار پيامي براي سرور ميفرسته كه من آنلاين هستم، سرور هم براش جواب ميفرسته كه پيام شما دريافت شد
اينطوري هم سرور ميفهمه كلاينت آنلاين هست و هم كلاينت ميفهمه سرور آنلاينه

اما سرور هم مثلا هر 20 ثانيه يكبار پيامي به كلاينتها ميفرسته كه هر كي آنلاينه اطلاع بده و منتظر مي‌مونه
هر كلاينتي پيام داد يعني آنلاينه و اگر نداد سرور ميفهمه كلاينت قطع شده