PDA

View Full Version : حرفه ای: مشکل در کنترل برنامه از راه دور



ghamgin
جمعه 18 بهمن 1392, 09:38 صبح
سلام دوستان خواهش می کنم کمکم کنید من یه برنامه دارم که اون رو روی سیستم کاربر نصب می کنم حالا میخوام از راه دور یعنی بدون دسترسی به کامپیوتر کاربر که برنامه روش نصبه بتونم برنامه رو غیرفعال کنم یا اطلاعاتی که مثلا در یک فایل متنی از طریق برنامه در درایوی ذخیره شده رو بگیرم و یااطلاعاتی رو به برنامه اضاف و یا ازش حذف کنم اصلا امکانش هست؟ باید چکار کنم؟ از طریق اینترنت این کارو انجام بدم یا ..؟ ممنون میشم راهنمایی کنید

مهران موسوی
جمعه 18 بهمن 1392, 14:23 عصر
راه حل اول : میتونید یک پورت خاص رو روی سیستم کاربر Listen کنید و از سمت خودتون دیتاها رو با یک فرمت خاص به پورت ارسال کنید و پردازش لازم رو بر اساس دیتاهای دریافتی سمت برنامه کاربر پردازش کنید . برنامه ها هم برای ارسال اطلاعات خودشون میتونن دیتا هارو بر روی یک پورت از یک ای پی ارسال کنند ( برنامه مدیریتی شما ) .

برای پیاده سازی بهینه این روش نیاز داری تا مسلط باشید به : Socket & asynchronous programming

راه حل دوم : میتونید از WCF و الگوی Event Driven در اون سود ببرید . مقاله رو به رو میتونه بهتون کمک کنه http://www.codeproject.com/Articles/20598/Event-Driven-Communication-Foundation

راه حل سوم : یا حتی میتونید برای ارسال و دریافت اطلاعات (به و از) برنامه سمت کاربرانتون، Web API رو در برنامه کابران توسط پروژه OWIN سلف هاست کنید و از امکانات WEB API restful لذت ببرید. فقط باید تدابیری رو در این روش در نظر بگیرید که ای پی سیستم کاربران توسط برنامه پس از اجرا براتون به نوعی ارسال بشه تا بتونید اکشن متد های سلف هاست شده رو روی اون سیستم فراخوانی کنید ...

و چندین روش دیگر که با جستجو میتونید پیاده سازیش کنید ...

mousa1992
جمعه 18 بهمن 1392, 14:46 عصر
راه حل اول : میتونید یک پورت خاص رو روی سیستم کاربر Listen کنید و از سمت خودتون دیتاها رو با یک فرمت خاص به پورت ارسال کنید و پردازش لازم رو بر اساس دیتاهای دریافتی سمت برنامه کاربر پردازش کنید . برنامه ها هم برای ارسال اطلاعات خودشون میتونن دیتا هارو بر روی یک پورت از یک ای پی ارسال کنند ( برنامه مدیریتی شما ) .

برای پیاده سازی بهینه این روش نیاز داری تا مسلط باشید به : Socket & asynchronous programming

راه حل دوم : میتونید از WCF و الگوی Event Driven در اون سود ببرید . مقاله رو به رو میتونه بهتون کمک کنه http://www.codeproject.com/Articles/...ion-Foundation

راه حل سوم : یا حتی میتونید برای ارسال و دریافت اطلاعات (به و از) برنامه سمت کاربرانتون، Web API رو در برنامه کابران توسط پروژه OWIN سلف هاست کنید و از امکانات WEB API restful لذت ببرید. فقط باید تدابیری رو در این روش در نظر بگیرید که ای پی سیستم کاربران توسط برنامه پس از اجرا براتون به نوعی ارسال بشه تا بتونید اکشن متد های سلف هاست شده رو روی اون سیستم فراخوانی کنید ...

و چندین روش دیگر که با جستجو میتونید پیاده سازیش کنید ...


با سلام
در روش هایی که معرفی کردید نیازه که ip کاربر رو بدونیم و کاربرای که از نرم افزار ما استفاده می کنند احتمالا valid ip ندارند ؛ ممکنه در مورد روش هاتون توضیح بدید و اینکه چجوری انجام میشن




سلام دوستان خواهش می کنم کمکم کنید من یه برنامه دارم که اون رو روی سیستم کاربر نصب می کنم حالا میخوام از راه دور یعنی بدون دسترسی به کامپیوتر کاربر که برنامه روش نصبه بتونم برنامه رو غیرفعال کنم یا اطلاعاتی که مثلا در یک فایل متنی از طریق برنامه در درایوی ذخیره شده رو بگیرم و یااطلاعاتی رو به برنامه اضاف و یا ازش حذف کنم اصلا امکانش هست؟ باید چکار کنم؟ از طریق اینترنت این کارو انجام بدم یا ..؟ ممنون میشم راهنمایی کنید


من پیشنهاد میکنم که سروری داشته باشید که نرم افزار با اون ارتباط برقرار کنه ( میتونید ی host خریداری کنید ) و هر نرم افزار سریالی مخصوص به خودش رو داشته باشه و در صورتی که لازم باشه قفلش کنید روی سرور این دستور جایی قرار میدهید (میتونید دیتابیس داشته باشید و اطلاعات مربوط به نرم افزار هارو نگهداری کنید ؛ در حالت ساده تر ی فایل هم جواب میده ) و نرم افزار با شروع کار با سرور ارتباط برقرار میکنه و قسمت های مربوطه رو میخونه و دستورات رو انجام میده

مهران موسوی
جمعه 18 بهمن 1392, 15:16 عصر
در روش هایی که معرفی کردید نیازه که ip کاربر رو بدونیم و کاربرای که از نرم افزار ما استفاده می کنند احتمالا valid ip ندارند ؛ ممکنه در مورد روش هاتون توضیح بدید و اینکه چجوری انجام میشن

الزام وجود یک IP ولید برای کاربر وجود نداره ، ولی برای برای دوستمون وجود داره ، ایشون برنامه مدیریتشون باید روی یک سیستم با یک IP ولید و ثابت باشه . البته بنده به هیچ عنوان استفاده مستقیم از IP رو پیشنهاد نمیکنم ، بهتره یک Domain داشته باشن و برنامه مدیریتشون روی یک سرور یا VPS یا ... که اون Domain روی اون تنظیم شده قرار بگیره .

سپس اگر از روش اول استفاده کنند ، برنامه های سمت کاربران ایشون میتونند به یک سوکت سمت سرور متصل شده و مبادلات رو انجام بدن، در این روش خود کلاینت ها با اتصال به پورت معین برنامه سرور. IP های خودشون رو در اختیار سرور قرار میدند...

برای روش دوم ، مقاله ای که لینک دادم همراه با یک نمونه سورس هست ، دانلود کنید و روش اطلاع یافتن از IP های کلاینت هارو اونجا ببینید

برای روش سوم هم میشه IP های کاربران رو با روش اول به سرور ارسال کرد و ... یا حتی برای درگیر نشدن با مبحث سوکت ها میشه روی سرور یک Web API داشت تا کلاینت ها با فرخوانی یک اکشن متد از سرور (یک URL) ، عملا IP خودشون رو به سرور ارسال کنند. در این روش IP از هدر Request دریافتی در سمت سرور قابل بازیابی هست :چشمک:

mousa1992
جمعه 18 بهمن 1392, 15:22 عصر
چیزی که دوستمون میخوان فک نکنم نیازی باشه که ip کاربران رو ذخیره کنند و چنین کاری هم نمیشه انجام داد چون هربار که request ی به سرور میفرستند با یک ip انجام میشه ، اما با web api موافقم

مهران موسوی
جمعه 18 بهمن 1392, 15:38 عصر
در روش های مبتنی بر Socket نیاز به ذخیره IP نیست ، اتصال ها به سوکت سرور از جانب کلاینت ها میتونه یک اتصال persistent باشه... و قطع ارتباط ( DC شدن Client Socket ) به معنای از دست رفتن ارتباط یا مثلا بسته شدن نرم افزار کلاینت یا هر چیز دیگه ...


چیزی که دوستمون میخوان فک نکنم نیازی باشه که ip کاربران رو ذخیره کنند و چنین کاری هم نمیشه انجام داد چون هربار که request ی به سرور میفرستند با یک ip انجام میشه

فکر نکنم منظورتون این باشه که یک کلاینت با هر بار ارسال درخواست به سرور یک IP جدید داره !!
برای نگهداری موقت IP ها میشه یک Cach Manager نوشت که IP هایی که بیش از مثلا نیم ساعت نسبت به ارسالی های سرور Response نداشتند از Cach Provider حذف بشند و ...

در آخر باید بگم پیاده سازی بهینه این روش ها بسته به توان فردی که میخواد پیاده سازی کنه شدنی هست

mousa1992
جمعه 18 بهمن 1392, 16:12 عصر
قصد ندارم که از حرفم دفاع کنم و دنبال یادگیری هستم
لطفا اگر حرفم صحت داره تایید و در غیر اینصورت برام توضیح بدین
مگر اینطور نیست که وقتی ی packet میخواد از شبکه خارج بشه router یک valid ip به اون اختصاص میده ( NAT ) تا بتونه با سرور ارتباط برقرار کنه و زمانی که پاسخی داده مییشه به همون ip فرستاده میشه و router هم پاسخ رو به سیستمی که با استفاده از اون valid ip درخواستشو فرستاده بود برمیگردونه و valid ip آزاد میشه و ممکنه کلاینت دیگه ای اونو در اختیار بگیره برا ارسال packet ها به خارج از شبکه و دفعه بعد که ما بخوایم درخواستی رو بفرستیم ممکنه که با ی valid ip دیگه ای فرستاده بشه ؟

متشکرم از راهنمایی هاتون

مهران موسوی
جمعه 18 بهمن 1392, 16:23 عصر
عملیات nat در روتینگ به معنی ترجمه یک Private IP ( آی پی درون شبکه ای ) به یک Public IP ( آی پی ولید یا همون آی پی مجاز برای اینترنت ) هست

شرکت های Pap برای اختصاص IP به کاربران از مکانیزم DHCP استفاده میکنند . این مکانیزم با هر بار اتصال شما ( کانکت شدن به اینترنت ) یک آی پی ولید در اختیار شما قرار میده و پس از اولین قطع ارتباط ( خاموش روشن کردن مودم ADSL ) ممکن هست ( 80% نسبت به زیر ساخت های اون خدمات دهنده ) IP اختصاص یافته به شما تغییر کنه . این تغییر آی پی تا زمان خاموش و روش شدن یا قطع و وصل شدن شما اعمال نخواهد شد .

پس با این اوصاف شما تا زمانی که IP اختصاص یافت بهتون تغییر نکرده به هر تعداد به هر سروری که Request ارسال کنید یک IP ثابت دارید مگر ارتباط شما به نت قطع بشه ( به هر شکلی ) و DHCP شرکتی که ازش خدمات اینترنت میگیرید IP اختصاص یافته به شمارو تغییر بده

mousa1992
جمعه 18 بهمن 1392, 16:37 عصر
ممنون از توضیحاتتون
نمیدونستم که ip رو برا مدتی به ی کلاینت اختصاص میدن ولی خب باز هم بستگی به پیکربندی که isp انجام میده داره درسته ؟
آیا این امکان هم وجود داره که ip رو به کسی اختصاص ندن ؟ و هر کلاینت هر بار یک ip بگیره ؟ اگر isp ، ای پی های valid کمی نسبت به کاربرانش داشته باشه ممکنه چنین کاری انجام بده

مهران موسوی
جمعه 18 بهمن 1392, 16:47 عصر
تا جایی که من اطلاع دارم ، به ازای هر پورت بوخت آزاد بر روی دیسلم در شرکت های خدماتی Pap ، میبایست یک IP ولید وجود داشته باشه . فکر نمیکنم هیچ شرکتی IP رو بر اساس Request تغییر بده

الان خودتون هر 10 دقیقه یکبار در گوگل عبارت what is my ip رو سرچ کنید ، خود گوگل ای پی شما رو نمایش میده براتون ! و این IP تا زمان خاموش روشن کردن مودم یا قطع و وصل شدن ارتباط اینترنت شما تغییر نخواهد کرد

ghamgin
شنبه 19 بهمن 1392, 11:03 صبح
سلام
ممنون از دوست خوبم جناب
Mehran
و دوستان عزیزی که در این تاپیک شرکت کردن
من تاپیک ها رو دنبال کردم اما
فکر می کنم با وقتی که من دارم روش سوم بهتر باشه
میخواستم از دوست عزیز جناب
خواهش کنم اگه ممکنه درباره روش سوم بیشتر راهنمایی کنید
ممنون میشم

مهران موسوی
شنبه 19 بهمن 1392, 14:57 عصر
از لینک زیر به عنوان یک راهنمای قدم به قدم Web API Self Hosting استفاده کنید

http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api

ghamgin
شنبه 19 بهمن 1392, 16:36 عصر
سلام ممنونم ازتون که لطف می کنید و وقت میگذارید فقط من لینک رو دیدم راستش رو بخواید سر در نیاوردم میشه بگید این روش سوم چکار می کنه چی هست؟ توی لینک گفته باید پکیج دانلود کنم.از کجا ؟ سایت فارسی یا نمونه خیلی کوچیکی ندارید که کارم جلو بیفته من تا حالا چنین پروژه ای رو انجام ندادم میدونم یادگیری سوکت زمان بر هست و فکر کردم روش سوم بهتره.. ممنون میشم راهنمایی بفرمایید با سپاس

مهران موسوی
شنبه 19 بهمن 1392, 20:54 عصر
دوست عزیز روش های پیشنهاد شده با توجه به اطلاعات شما از نظر زمانی میتونه براتون هزینه بر باشه .

پکیج هارو باید از nuget دریافت کنید . در ضمن پیشنهاد میکنم منابع فارسی رو به کلی فراموش کنی ... فعالیت بنده هم در برنامه نویس فقط صرفا جهت بالا بردن سطح اطلاعات دوستان و ذکات هست، اگر از پسم بر بیاد البته، و لاغیر...

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

ghamgin
دوشنبه 21 بهمن 1392, 18:47 عصر
دوست عزیز روش های پیشنهاد شده با توجه به اطلاعات شما از نظر زمانی میتونه براتون هزینه بر باشه .

پکیج هارو باید از nuget دریافت کنید . در ضمن پیشنهاد میکنم منابع فارسی رو به کلی فراموش کنی ... فعالیت بنده هم در برنامه نویس فقط صرفا جهت بالا بردن سطح اطلاعات دوستان و ذکات هست، اگر از پسم بر بیاد البته، و لاغیر...

از روش های ساده تری هم میتونی استفاده کنی ، مثلا دانلود یک فایل تکس از سرور و متقابلا آپلود فایل بر روی سرور . ولی این روش به هیچ عنوان انعطاف لازم رو نداره و از طرف شخص بنده پیشنهاد نمیشه ...
-------------
سلام
ممنونم ازتون
البته که شما لطف می کنید و بی منت دوستان رو راهنمایی می کنید خدا خیرتون بده

از اون روز کارم شده سرچ کردن اما متاسفانه هیچی ازتوش در نیومد..موفق نشدم
دارم دیوونه میشم
خواهش می کنم یکی کمکم کنه
ممنون