ورود

نسخه کامل مشاهده نسخه کامل : ارتباط سیستم ها در یک شبکه و سرور مرکزی



shadmehrshadow1
29-12-2012, 20:41
سلامما یک سرور مرکزی داریم که چندتا کلاینت اطلاعاتشون رو از اون میخونن و به نوعی به اون وصل هستند.من میخوام بدونم این کلاینت ها چه جوری میتونند با هم ارتباط برقرار کنند . به این شکل که هر کلاینت لیست کلاینت های دیگه رو داشته باشه و اگه خواست بتونه برای هرکدوم پیام بفرسته و اون سیستم هم پیام رو دریافت کنن و ببینه.ممنون

senaps
29-12-2012, 21:42
سلام....
هر کلاینت زمانی که وصل میشه، یه بسته باید به سرور بفرسته و سرور به سایر کلاینت های انلاین پیغامی بفرسته که فلان سیستم انلاین هست...
همین مسئله برای افلاین شدن در سیستم هم رخ میده...

در بخش بعدی، برای ارسال دیتا(متن عکس فیلم صدا یا هرچیز دیگه!) دو روش کلی هست:
۱- ارسال مستقیم داده به گیرنده
۲- ارسال داده به سرور و سرور به گیرنده...

در مورد اول، شما می‌بینید که مثلا برنامه های چتی که در دانشگاه می‌نویسیم، خیلی راحت داده ها رو تبادل میکنن و ممکنه ما اون وسط سروری هم داشته باشیم که کار بخصوص دیگه ای هم میکنه....
در این مورد، مثلا ما برای یک کافی نت برنامه‌ای نوشتیم که مسئول سیستم میتونه با اون سیستم ها رو کنترل کنه و صفحه‌ی اونا رو ببینه و خاموش کنه و ...!! در عین حال، امکان این رو داره که کاربر مثلا سیستم ۵ به سیستم ۶ دیتا ارسال بکنه و باش چت کنه...
این یه امکان اضافی برای سیستم هست که بعد از بستن برنامه‌ی چت، لوگ بخصوصی هم نداریم(هرچند میتونیم با چند خط کدنویسی لوگ هم بگیریم و متن چت ها رو نگه داریم!)...

حالت دوم اینه که مثل این سایت، شما پیغام رو میفرستی به دیتابیس... با یه سری ویژگی های گیرنده و فرستنده و متن و عنوان و....!!
هر کاربر که لاگین میکنه، با توابعی چک می‌کنیم که ایا در دیتابیس پیغامی هست که گیرنده‌اش به شماره‌ی کاربری ایشون اشاره بکنه و مثلا فیلد خونده‌شده اش خالی یا ۰ باشد(به معنای خوانده نشده!) اگر بله، تعدادشون رو در یک بلاک نشون می‌دیم و حالا میتونیم براش لینکی در نظر بگیریم که کاربر روش کلیک بکنه و متن مربوطه رو ببینه و ....!!!

حالا تفاوت دو سیستم که هردو امکان چت رو فراهم کردن چیه؟!
سیستم اول، اینستنت مسیجینگه و در لحظه پیغام ها رد و بدل میشن!
در حالی که سیستم دوم باید برای دیدن مسیج جدید صفحه رو رفرش کنی و کار طولانی تری هست...

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

حالا حالت های مختلفی هم داریم! مثلا تعداد دریافت کننده و یا عمومی بودن و نبودن پیغام و.....!!

---------------
در این مثال ها، من گفتم دیتای ارسال شده متنه.... شما میتونی دیتای ارسال شده‌ات هردیتایی باشه...

shadmehrshadow1
30-12-2012, 16:25
ممنون دوست عزیز
میشه یه نمونه سورس هم بزارید

senaps
30-12-2012, 18:51
سلام....

در خصوص چت کردن دو سیستم، کدی رو قرار میدم به روی چشم(پروژه‌ی ترم سوم دانشگاه‌خودم...)... اضافه کردن و یا استفاده‌اش در سیستم های دیگه به عهده‌ی خودتون...
در خصوص دومی، راستش باید سورس رو بنویسم که واقعیتش اینه که حوصله ندارم! :)
پس شرمنده میشم در این قسمت... ولی میتونین کد های پیغام خصوصی انجمن هایی مثل وی‌بولتین یا ... رو ببینین که حجمشون هم ۱۰-۱۲ مگ بیشتر نیست...
سورس سی‌شارپی پیغام خصوصی رو اگر پیدا کردم میدم خدمت شما...

senaps
01-01-2013, 14:48
سلام....
با عرض معذرت به خاطر دیرکرد در پاسخ، نرم‌افزار ساده‌ی چن کردن بین یک کلاینت و سرور رو برای دوستان میگذارم.... (تعداد کلاینت ها اهمیتی نداره!)....

59018

shadmehrshadow1
02-01-2013, 13:12
سلامممنون دوست عزیز نمیشه کاری کرد که کلاینت ها هم بتونن با هم چت کنند؟

senaps
02-01-2013, 15:38
کلاینت ها هر تعداد باشن، بالاخره باید یه نقطه‌ی مرکزی داشته باشن دیگه!!! این نقطه‌ی مرکزی سروره...
در یک پروژه‌ی بزرگ، شما میتونی سرور رو فقط برای اتصال سیستم ها استفاده بکنی و یا ....

shadmehrshadow1
02-01-2013, 16:46
کلاینت ها هر تعداد باشن، بالاخره باید یه نقطه‌ی مرکزی داشته باشن دیگه!!! این نقطه‌ی مرکزی سروره...در یک پروژه‌ی بزرگ، شما میتونی سرور رو فقط برای اتصال سیستم ها استفاده بکنی و یا ....بله .دقیقادرست مثل همین پروژه ای که شما قرار دادید کلاینت ها به یک سرور وصل هست و میتوند به سرور پیام بدنذ و دریافت کنند.من میخوام ببینم چه طور همین کلاینت ها می تونند به همن دیگه هم پیام بدند.

senaps
02-01-2013, 23:46
دقیقا یادم نیست.... ولی اگر الان یکی به من بگه کاری کن که دو کلاینت متصل به سرور با هم چت بکنن و سرور فقط مرکزی باشه که بهش وصل میشن، من تابعی برای ارسال می‌نوشتم که دیتا رو به کاربر گیرنده بفرسته!!
یعنی سرور دیتا رو بگیره و بفرسته برا اونیکی کاربر متصل!!

یا در صورت نیاز به حذف کردن کلی سرور، خوب ای‌پی یکی باید به دیگری داده بشه به هر صورت و همین برنامه هم کار میکنه(یعنی یکی میره تو مد لسن! و دیگری دیتا میفرسته و ....!!)

shadmehrshadow1
06-02-2013, 21:22
سلام
میخواستم ببینم چه طوری میشه ساعت و تاریخ سیستم سرور رو در کلاینت ها به دست آورد تا اگه ساعت و تاریخ کلاینت ها اشتباه بود دیگه به مشکل بر نخوربم؟
ممنون

senaps
07-02-2013, 09:34
هر گونه‌ دیتایی بخواید تبادل کنین، تبادل به ارایه‌ای از بیت ها میکنین و می‌فرستید! و از اون طرف تبدیل به داده‌ی مورد نظر(قبل از تبدیل به بیت!) میکنین و استفاده میکنین....
برای داشتن ساعت سرور، باید از ترد ها و تایمر ها استفاده کنین...

shadmehrshadow1
08-02-2013, 14:20
سلام.ممنون. میشه کمی بیشتر توضیح بدی و یه نمونه کد هم بگی مثلا چه جوری؟

senaps
08-02-2013, 18:40
یه مثال گذاشته بودم از تبدیل دیتا به بیت، الان یادم نیست کجاست!! ولی برای شما گذاشته بودمش( برنامه‌ی چت!!) ممکنه تو همین صفحه‌ی قبلی هم باشه!

shadmehrshadow1
09-02-2013, 19:46
یعنی باید یک تایمر توی سرور بزاریم که پشت سر هم ساعت خود رو به صورت بیت به کلاینت بفرسته و توی کلاینت یک تایمر بزاریم که پشت سر هم اطلاعات رو بخونه و بفهمه که این چیزی که از سرور فرستاده شده ساعت هست؟

senaps
09-02-2013, 20:30
خیر.....
از اونجایی که ما میدونیم ساعت چطوری کار میکنه، وقتی برنامه ها ران شدن، یه بار ساعت رو از سرور میگیریم و بعد با تایمر ساعت رو ادامه میدیم!! :)....

(ساعت خودش یه تایمره! )....