ساخت نرم افزار چت - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

ساخت نرم افزار چت

+2 امتیاز
سلام

میخواستم در مورد الگوریتم و در کل نحوه ساخت نرم افزار های چت یا مسنجر سوال کنم!

*ما برای اینکه نرم افزار های چت یک به یک (یعنی فقط دو نفره ) بسازیم باید با استفاده از client/server این کارو انجام بدیم ؟  یعنی کاربرا مستقیم با همدیگه ارتباط برقرار میکنن یا باید یه سرور رابط وجود داشته باشه که اطلاعات از سمت هر کاربر اول به سرور ارسال بشه بعد به طرف مقابل؟

*اگه سرور رابط وجود نداشته باشه کاربرا چطوری آی پی همو پیدا میکنن تا باهم ارتباط برقرار کنن ؟

در حالت کلی میتونید بطور خلاصه توضیح بدید نرم افزار های چت چطوری کار میکنن ؟ مثلا نرم افزار whatsapp چطوری کار میکنه ؟

تشکر.
سوال شده اردیبهشت 10, 1393  بوسیله ی amc (امتیاز 280)   3 5 16

2 پاسخ

+3 امتیاز

سلام .

الگوریتم ها رو باید خودتون پیاده سازی کنید . چون برنامه های چت از قانون خاصی ( به غیر از Protocol ها ) پیروی نمیکنن .

حتی شما میتونید خودتون یه Protocol خاص خودتون رو درست کنید و باهاش Peer هارو بهم ارتباط بدید .

اول اینکه برای مثال ۲ نفر بخوان با هم چت کنن و IP های پویا داشته باشن باید بین اینا یک جای ثابتی باشه که اول به اون رجوع کنن تا بتونن همدیگر رو پیدا کنن . پس یه IP ایستا یا همون Server باید این وسط باشه تا هر ۲ نقر (یا بیشتر) اول به اون وصل بشن بعد همدیگرو پیدا کنن .

حالا اگه سرور نداری جریان فرق داره . راهی عمومی برای اینکار نمیدونم . ولی من خودم اینکار رو میکردم (احتمالا بکارت بیاد)

مثلا داخل سایت هایی مثل tinypaste.com یه account درست میکردم . یه paste درست میکردم . و IP حال حاضر سیستمم ( که قرار بود Server بشه ) رو داخلش مینوشتم و قبلش و بعدش ۴ تا # میزاشتم (دلیلشو میگم جلوتر ) و ذخیره میکردم . و آدرس اون paste رو کپی میکردم و داخل برنامم به صورت یه رشته ی * const char نگه میداشتم .

داخل برنامه با یه  socket به آدرسی که ساخته بودم (همونی که داخل * const char ذخیره کرده بودم ) وصل میشدم و با پروتکل HTTP داده های اون صفحه رو میخوندم . و دنبال اون ۴ تا # اولی میگشتم هر وقت پیداش کردم از آخر ۴تا# اول تا قبل ۴ تا # اخر رو میخوندم و داخل یه بافر نگه میداشتم و اینطور آدرس سرور بدست میومد .

 

برای Protocol های چت اینجارو نگاه کن : Online Chat

برای socket یا خودت بنویس یا میتونی از libcurl استفاده کنی .

پاسخ داده شده اردیبهشت 10, 1393 بوسیله ی Ali Rahbar (امتیاز 4,240)   6 16 46
بنظرتون اگه به کمک یه سایت معمولی(یعنی یه دامین) و دیتابیس یعنی با استفاده از json و php که به دیتابیس متصله ساخته بشه غیر استاندارد محسوب میشه ؟
مهم ، سرعت و امنیت و آسون بودن و زیبا بودن برنامه چت هست . شما با هر چی که میخوای این کار رو بکنی بکن . مهم اینه که این موارد رو برنامه چتتون داشته باشه .
+1 امتیاز
با چه زبونی

به طور کلی میتونی با winsock اینکاررو انجام بدی

اما اگه میخوای مثل whatsapp راه بندازی باید اطلاعات voip و شبکت قوی باشه

البته بدون این کارا هم میشه اما استاندارد نیست و در آینده مشکل بهم میزنی

برا اون سوالتون اگه تحت لوکال باشه تعداد آیپی ها مخصوصا توی رنج c چشم گیر نیست و با اسکن پورت میتونید همدیگرو پیدا کنید

اما به طور پیشرفته و تحت wide باید سرور مرکزی داشته باشین

میتونین تحت دامین به اکتیو دایرکتوری بگین که هر مکی چه آدرسی بگیره بعد آیپی سیستم هارو که از قبل معلوم شده در برنامه قرار بدین

خیلی راه ها داره که بستگی به شرایط امنیت بودجه و در کل بسته به کار سناریو تغییر میکنه

برای اینکه به یک پورت همزمان متصل شن میتونید sync و async بخونید
پاسخ داده شده اردیبهشت 10, 1393 بوسیله ی Fire360Boy (امتیاز 2,524)   6 24 43
ویرایش شده اردیبهشت 12, 1393 بوسیله ی Fire360Boy
voip بیشتر برا تماس صوتی نیست ؟
آره خوب همینجوره
...