PDA

View Full Version : ارسال داده از سرور به کلاینت(از طریق اینترنت)



nima.sh
شنبه 03 فروردین 1392, 21:44 عصر
سلام به همه ی دوستان....
سوال رو که تو عنوان بیان کردم،اما شرح سوال:
من میخوام یه سری اطلاعات رو از سرور به کلاینت ارسال کنم،هر دو ویندوز اپلیکیشن هستند.
تنها مشکل من اینه که نمیتونم ip valid رو بدست بیارم تا با استفاده از پروتکل های udp و tcp داده ها رو ارسال کنم...
اگه دوستان متخصص خواهش میکنم راهنمایی کنند...
به طور کل مثل یه مسنجر...
موفق و پیروز باشید...

plus
شنبه 03 فروردین 1392, 22:09 عصر
شما میتونی روشی رو اتخاذ کنی که client برای دریافت اطلاعات به سرور وصل بشه (مثلا به طور ممتد هر 30 ثاینه یکبار) یا Connection شما به سرور باز بمونه تا به مشکل Invalid IP بر نخوری

nima.sh
شنبه 03 فروردین 1392, 23:12 عصر
ممنون plus عزیز....
ولی مشکل من اینه که تمامی دستورات(داده ها)به طور همزمان اجرا بشه....
یعنی ارتباط مستقیم باید داشته باشه....

nima.sh
یک شنبه 04 فروردین 1392, 10:22 صبح
دوستان عزیز...
کسی نیست راهنمایی کنه...؟

RED-C0DE
یک شنبه 04 فروردین 1392, 11:57 صبح
سرور valid ip داره؟
کلاینتها ندارن؟

RED-C0DE
یک شنبه 04 فروردین 1392, 12:03 عصر
شاید بتونی ب نحوی از DynamicDNS (http://en.wikipedia.org/wiki/Dynamic_DNS) ها استفاده کنی..

مشکل ip valid رو حل می کنن..شما می تونی با یک نام dns با سیستمها در ارتباط باشید.مثلا myClient1.com بجای ادرس ip و این نام همیشه ثابت هست... مکانیزمی ک DynamicDns ها پیاده می کنن باعث می شه ک فارغ از آدرس ip متغیر سیستمهاتون ، فقط با اون نام با سیستمهاتون در ارتباط باشید و خودشون پشت صحنه (البته با کمک برنامه هایی ک روی سیستم کلاینت شما نصب باید بکنید) اوضاع رو هندل می کنن...

روالشون رو در بیارید تا کامل متوجه بشید چی می گم..
بعد اگه خواستین ،‌دنبال سرویس های رایگانش بگردید و استفاده کنید..

nima.sh
یک شنبه 04 فروردین 1392, 16:29 عصر
ممنون دوستا عزیز....
دارم در موردش یه مقاله میخونم،روش عالیه...
فقط یه سوال دیگه....؟
مسنجرها چطور عمل میکنند....؟
از همین روش...؟

RED-C0DE
دوشنبه 05 فروردین 1392, 00:56 صبح
نه برای مسنجرها نیازی ب همچین کارایی ک من گفتم نیس (با اینایی ک من گفتم لقمه رو چند دور می گردونین)
(من الان فهمیدم ک اصل سوالتون ، برای نوشتن ی برنامه-مسنجر مانند بوده)

تنها ، کلاینت نیازه ک بدونه سرور کجاس ، بهش متصل می شه و ارتباط بصورت TCP برقرار می مونه ، یک ارتباط 2 طرفه..
سرور شما می تونه N تا Incoming TCP Connection همزمان رو مدیریت کنه ، N تا TCP Connection بهش متصل هستند و باید شما اینها رو ب نحوی کنار هم بچینین ک می شه دیگه مسائل مربوط ب معماری برنامه و منطق و سیاست برنامه های client server chatting

در کل نیازی نیس ک کلاینتها آدرس معتبر داشته باشن و اون DynamicDNS رو برای اینجا فراموش کنید
تنها باید بتونید ی برنامه چت کلاینت-سرور بصورت MultiThreaded بنویسید ک چیز جدیدی هم نیست نمونش زیاده
http://www.codeproject.com/Articles/16023/Multithreaded-Chat-Server

nima.sh
دوشنبه 05 فروردین 1392, 09:09 صبح
ممنون دوست عزیز....
من این برنامه رو واسه local نوشتم،ولی نمیدونم چطور از طریق اینترنت باید با هم ارتباط برقرار کنند،اونجا که ip نمیشه داد....!!!!
به هر حال یه دنیا ممنون که راهنمایی میکنید....
موفق باشید...

RED-C0DE
دوشنبه 05 فروردین 1392, 09:39 صبح
شما نیاز دارین سیستم سرورتون ip valid داشته باشه یا ب همون طریقی ک گفتم هم می شه (DynamicDNS) و کلاینتها باید بدونن ب چی میخوان وصل شن
(حرفه ای تر بخواین کار کنین و کارتون رو گسترش بدین در آینده, ب اینصورت می تونه باشه ک ی LoadBalancer هم داشته باشید اون وسط و Nتا سرور, ک Load Balancer بر اساس پارامترهای مختلف تصمیم بگیره کلاینت جدید ب چ سروری متصل ش)

yahoo! messenger رو فرض کنید, شما برنامه رو اجرا می کنید , خود برنامه می دونه در نهایت ب کجا باید وصل ش.

ب زبان ساده تر , برنامتون اگه تو شبکه ی محلی کار می کنه تو اینترنت هم کار می کنه.

شما نگرانیتون نحوه ارتباط در اینترنته؟ اگه کار اصلی (نوشتن یک برنامه multiThreading چتینگ) رو انجام دادین بقیه راه دیگه چیزی نیس چون فقط کافیه سرورتون ک الان یک سیستم محلی بوده و مثلا از طریق اسم کامپیوتر یا ip باهاش در ارتباط بودین, الان اون ip می شه یک ip/آدرس ثابت و معتبر

nima.sh
دوشنبه 05 فروردین 1392, 09:52 صبح
باز هم ممنون دوست عزیز....

شما نگرانیتون نحوه ارتباط در اینترنته؟ اگه کار اصلی (نوشتن یک برنامه multiThreading چتینگ) رو انجام دادین بقیه راه دیگه چیزی نیس چون فقط کافیه سرورتون ک الان یک سیستم محلی بوده و مثلا از طریق اسم کامپیوتر یا ip باهاش در ارتباط بودین, الان اون ip می شه یک ip/آدرس ثابت و معتبر
دقیقا مشکل من همینجاست....
server من ip valid نداره،خواستم بدونم راه دیگه ای به جز ip valid وجود داره یا نه...؟
شما لطف کردید فرمودید(DDNS, Load Balancer)
حالا سوال من اینه که شما فرمودید:

سرورتون ک الان یک سیستم محلی بوده و مثلا از طریق اسم کامپیوتر یا ip باهاش در ارتباط بودین, الان اون ip می شه یک ip/آدرس ثابت و معتبر
چطور من ip خودم رو به عنوان سرور به کلاینت معرفی کنم....؟
خیلی نیاز دارم،پروژه داره تکمیل میشه،فقط رو این قسمت مونده،تیم شبکه مون رفته ما گرفتار شدیم....
باز هم ممنون از راهنماییتون....

RED-C0DE
دوشنبه 05 فروردین 1392, 10:58 صبح
من حالت ساده و بدون حاشیه اش رو می گم, جزئیاتش رو برای اینکه شلوغ نشه فعلا نمی گم تا خودتون بهش برسین

اولا اگه برنامه خیلی مهم و تجاری هست, بهتره ک ip valid تهیه کنید براش تا ثابت باشه سرورتون.
ولی اگه ب هر دلیلی اینکار عملی نیست, یک DynamicDNS رایگان ثبت کنید برای سیستم سرورتون (فرض می کنیم آدرس سیستم سرورتون در نهایت می شه MyServer.Com)
بعدش همه جوره تست کنین و روال کار این DynamicDNS ها رو کامل متوجه بشید.
حالا سرور باید ب اینترنت متصل باشه
تست کنید ک MyServer.com رو می تونید بهش برسید از طریق اینترنت. ping کنید سیستم رو.
تنظیمات امنیتی اگه مد نظرتون هست و تنظیمات مربوط ب فایروال و مابقی چیزها رو انجام بدین.( توصیه می کنم اگه زیاد تو این زمینه ها مسلط نیستید فعلا, همه چیز (منظور فایروال و اینجور داستاناس) رو غیر فعال کنید تا اول بتونید تست ارتباط رو بدرستی انجام بدید , بعدش قدم ب قدم تنظیمات مربوط ب ارتباطتون رو پیاده کنید)

تا اینجا اصلا کاری در برنامه شما انجام نشده و فقط باید مطمئن شید سیستمتون/سرورتون قابل دستیابی از طریق اینترنت هست اگه "آره" پس سرور اوکی هست.
حالا در برنامتون , جایی ک قراره ب سرور لاگین کنید آدرس MyServer.com رو بزنید. همین.

بقیه چیزا ب ساختار برنامتون بر می گرده ک انگار اصلا خبر نداره الان سرورش روی اینترنت هست یا روی یک شبکه محلی یا یک سیستم محلیست. فقط می دونه ک از طریق چ آدرسی باید بهش متصل ش.