# Native Code > برنامه نویسی موبایل > Android Studio >  کمک در نوشتن برنامه  شبکه اجتماعی (نظیر وایبر)

## mohsen22

سلام . می خوام شروع به نوشتن چنین برنامه ای بکنم ... ممنون میشم اگه اساتید تجربیاتشونو در اختیار بنده و دیگران بزارند و ما را کمک کنند.
پیگیری های انجام شده:
در نمونه برنامه ها  سورس برنامه وی چت وجود داره که شروع کردم به ترجمه کردنش !! نمی دونم نیازمو برطرف می کنه یا نه
اگه شد اونوقت سرور و کد نویسی سمت سرور رو چیکار کنم!؟
باز هم تشکر

----------


## mohsen22

کسی با مثال مذکور کار کرده؟ لطفا نصب کنید و بگید طریقه کارکردنش چجوریه؟ مرسی

----------


## saeed_g21

نمیخوام ناامیدت کنم ولی هزینش و ریسکش بالاست
نمی صرفه!!!... .

----------


## Nevercom

این توضیحات بر اساس دانش محدود من هست، بر این تکیه نکنید و خودتون برای راه حل بهتر جستجو کنید.

راه حل استاندارد استفاده از پروتوکل XMPP هست که برای این منظور بهینه شده. این پروتوکل یک کانکشن دوطرفه رو باز می کنه.

برای اینکار شما به یک سرور نیاز دارید. اپلیکیشن های سرور آماده ای مثل OpenFire وجود داره که امکانات خوبی برای مدیریت کاربران در اختیار میزاره. این اپلیکیشن تحت جاوا هست
برای اندروید هم کتابخانه هایی مثل aSmack وجود داره که اتصال به سرور رو مدیریت می کنه.

شاید خودتون بتونید با Socket Programming همه ی اینها رو خودتون بر اساس نیاز بنویسید، اما شاید این فریم وورک ها کارتون رو راحت تر کنن.

----------


## mohsen22

ممنون از راهنمایی شما عزیزان.. بلاخره باید از یه  جا شروع کرد.. میخوان روشی که انتخاب میکنم بهترین و کامل ترین باشه که در اینده کم نیارم... 
ممنون اگه داشته هاتونو ولو اندک در اختیارم بزارید. موضوع رو اینجا ادامه میدیم تا ببینیم خدا چی می خواد.

----------


## mohsen22

یه مثال خوب پیدا کردم .. لطفا نگاه کنید و اگه ممکنه نظر بدید .. مرسی
http://quickblox.com/developers/Andr..._Web_XMPP_Chat

----------


## darkenerboy

*صرفا جهت اطلاع*


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

----------


## harani

> سلام . می خوام شروع به نوشتن چنین برنامه ای بکنم ... ممنون میشم اگه اساتید تجربیاتشونو در اختیار بنده و دیگران بزارند و ما را کمک کنند.
> پیگیری های انجام شده:
> در نمونه برنامه ها  سورس برنامه وی چت وجود داره که شروع کردم به ترجمه کردنش !! نمی دونم نیازمو برطرف می کنه یا نه
> اگه شد اونوقت سرور و کد نویسی سمت سرور رو چیکار کنم!؟
> باز هم تشکر



استاد بهنام آقاجانی از جمله افرادی هستند که در بسیاری از رشته های برنامه نویسی تبحر ویژه ای دارند یکی از پروژه هایی که انجام داده اند پروژه ی wichat است . فکر کنم ایشان بتواند کمکی به شما کند سایت ایشان http://uncocoder.com/
 میباشد که در قسمت تماس با ما میتوانید به استاد ایمیل یا ارتباط تلفنی داشته باشید .

----------


## darkenerboy

دقیقا مارکت ایران اپس مال 


> استاد بهنام آقاجانی


 هستش ؟

----------


## #root#

> دقیقا مارکت ایران اپس مال  هستش ؟


تنها برنامه نویسی نسخه قبل توسط ایشون انجام شده بود (Iranapps مدتی تعطیل شده بود و جدیدا فعال شده)

----------


## mohsen22

ممنون.... می خوام خودم شروع کنم به نوشتن.... مدیریت محترم انجمن.  نظری ندارند؟ سایر اساتید؟

----------


## dasssnj

اگه فیلتر شه چی کار می کنی؟

----------


## Nevercom

اون QuickBlox رو من قبلاً دیده بودم، SDK خوبی هست، اما حالت مجانیش برام محدود بود (اون موقع فکر کنم پلن هاش فرق می کرد). اگر حالت رایگانش جوابگوی نیازت هست ازش استفاده کن.

----------


## mohsen22

ممنون. درسایت ثبت نام کردم و یوزر و پس هم دریافت نمودم.... اما نمونه مثال خود سایت رو در اکیلیپس نتونستم اجرا کنم.. هر چند زحمته اما ممکنه یه نگاه بهش بندازین؟ مرسی

----------


## negative60

قبل از اينکه به فکر ساختن کلاينت باشيد بايد نسخه سرور رو طراحی کنيد و بسازيد و اگر هدفتون سروری باشه که بتونه هم زمان تعداد بالايی کاربر رو پشتبانی کنه قطعا نسخه سرور بايد با يک زبان نيتيو مثل C/C++‎ انجام بشه

----------


## shahin bahari

> قبل از اينکه به فکر ساختن کلاينت باشيد بايد نسخه سرور رو طراحی کنيد و بسازيد و اگر هدفتون سروری باشه که بتونه هم زمان تعداد بالايی کاربر رو پشتبانی کنه قطعا نسخه سرور بايد با يک زبان نيتيو مثل C/C++‎‎ انجام بشه


اتفاقا با PHP و یا جاوا باشه بهتره. هندل کردن ترافیک http  با سرعت اجرای یه اپلیکیشن فرق داره.

----------


## negative60

> اتفاقا با PHP و یا جاوا باشه بهتره. هندل کردن ترافیک http  با سرعت اجرای یه اپلیکیشن فرق داره.


مفسر php  خودش با c نوشته شده چطور ميگيد php بهتره, برای همچين پروژه اي ساختن سرور با يک زبان تحت وب اصلاً مناسب نيست به خاطر کمبود هايی که تو پروتکل HTTP وجود داره موجب ميشه طراحی سرور به شکل ديگری انجام بشه که در نتيجه باعث افزايش منابع و کاهش سرعت خواهد شد, يکی از اين مشکلات نبود امکان برقراری ارتباط دائم بين سرور و کلاينت هست که همين باعث به وجود اومدن مشکلات ديگه ميشه مثل مشکل مديريت کاربران آنلاين و يا نا ممکن شدن تماس صوتی و تصويری.
در مورد جاوا و زبان های دات نتی هم به خاطر اينکه برنامه های توليد شده در ماشين مجازی اجرا ميشوند سرعت اجرا و مديرتيت منابع برای يک سرور قدرتمند پايين خواهد بود

در ضمن هيچ سرور بزرگی رو نخواهيد ديد با جاوا يا زبان تحت وب ساخته شده باشه: اسکايپ، ياهو مسنجر، گوگل تاک، وايبر ،واتس آپ و ...

----------


## shahin bahari

بله درسته مفسر PHP با سی نوشته شده. سی هم با اسمبلی نوشته شده. پس بهتره همه چیو با اسمبلی بنویسیم که بالاترین پرفرمنس رو داشته باشیم! این حرف درست هست ولی در عمل هیچ وقت اتفاق نمی افته. شما همین مفسر PHP رو هم با سی دوباره بنویسید به مراتب ضعیف تر از مفسر فعلی میشه و دلیلش هم این هست که کلی چیز هست که باید حواست بهش باشه و امکان نداره بدون باگ بتونی پیاده کنی! در عوض این زبان های ساخت یافته رو هزاران نفر اصلاح کرده اند. پس با توجه به اینکه نهایتا چند نفر قراره برنامه سرور رو بنویسند و منابع شرکت های بزرگ رو ندارند بهتره که از چیزی استفاده کنند که سریع تر به نتیجه برسونشون.
این سرور هایی که گفتید دیگه از سرور های فیس بوک با این همه بازدید که داره بزرگتر که نیستند. فیس بوک اکثر قسمت هاش با LAMP هست. البته منکر این نمیشم که سی اصلا استفاده نمیشه ولی زبان اصلی نیست.خیلی از قسمت ها با سی،پایتون، روبی و..... باید نوشته بشه اما زبان اصلی همون PHP هست.
http://stackoverflow.com/questions/3...s-facebook-use
http://www.makeuseof.com/tag/faceboo...ogy-explained/

----------


## mohsen22

ممنون... بازم نظر بدید لطفا داریم استفاده می کنیم

----------


## negative60

> بله درسته مفسر PHP با سی نوشته شده. سی هم با اسمبلی نوشته شده. پس بهتره همه چیو با اسمبلی بنویسیم که بالاترین پرفرمنس رو داشته باشیم! این حرف درست هست ولی در عمل هیچ وقت اتفاق نمی افته. شما همین مفسر PHP رو هم با سی دوباره بنویسید به مراتب ضعیف تر از مفسر فعلی میشه و دلیلش هم این هست که کلی چیز هست که باید حواست بهش باشه و امکان نداره بدون باگ بتونی پیاده کنی! در عوض این زبان های ساخت یافته رو هزاران نفر اصلاح کرده اند. پس با توجه به اینکه نهایتا چند نفر قراره برنامه سرور رو بنویسند و منابع شرکت های بزرگ رو ندارند بهتره که از چیزی استفاده کنند که سریع تر به نتیجه برسونشون.
> این سرور هایی که گفتید دیگه از سرور های فیس بوک با این همه بازدید که داره بزرگتر که نیستند. فیس بوک اکثر قسمت هاش با LAMP هست. البته منکر این نمیشم که سی اصلا استفاده نمیشه ولی زبان اصلی نیست.خیلی از قسمت ها با سی،پایتون، روبی و..... باید نوشته بشه اما زبان اصلی همون PHP هست.
> http://stackoverflow.com/questions/3...s-facebook-use
> http://www.makeuseof.com/tag/faceboo...ogy-explained/


مقايسه شما منطقی نيست C تمام نياز های برنامه نويس رو براورده ميکنه و دليلی بر دوباره ساختن وجود نداره زمانی حرف شما درسته که php و کلاً وب سرو نياز های برنامه نويس رو براورده کنه. اگر وب سرور و php تمام نياز های برنامه های تحت شبکه رو براورده ميکرد متخصصان پروتکل های گونا گون رو ابدا نميکردن. هر زبانی رو بهر کاری ساختند زبان تحت وب اسمش روش هست برای ساختن سايت و کارهای مبتنی بر وب مناسب هست نه برنامه چت صوتی تصويری! با اهداف بزرگ, درسته که به نحوی ميشه چت متنی ساخت اون هم نه به شکل دلچسبی اما اصولی و درست نيست همانطور که ميشه با چاقو يک پيچو شل يا سفت کرد . 


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

فيسبوک يک سايت هست نه پيام رسان و نميشه اون رو با برنامه مقايسه کرد چون کلاً نحوه کار فرق داره اگر هم منظورتون چت فيسبوک باشه که اون هم با XMPP ساخته شده .

----------


## shkna1368

من روی همچین پروژه ای کار کردم.تجاربم رو به طور خلاصه میگم.
شما اول باید ابتدا به فکر سیگنالینگ و برقراری ارتباط اولیه باشید.پروتکل سیگنالینگ SIP هستش.در سمت سرور میتونید از   mobicent sip servlet استفاده کنید و سمت client ها میتوانید ازsipdroid استفاده کنید(سرور و کلاینت با زبان جاوا)
مرحله دوم انقال صوت از افراد به سرور و ارسال صوت به طرف مقابل که از پروتکل RTP  استفاده میشه.در جاوا از JMF سمت سرور و باز هم با sipdroid یا jlibrtp سمت کلاینت استفاده کرد.
برای همچین کری 5 نفر 10 ماه کار کردن تا به نتیجه رسید

----------


## mohsen22

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

----------


## shkna1368

شما با استفاده از پروتکل sip  و پیغام sip message request قادر به ارسال مسیج خواهید بود
کتاب زیر خیلی بهتون کمک میکنه :
http://www.amazon.com/Internet-Multi...2&keywords=sip
اینم لینک دانلود:
http://196.29.172.66:8080/jspui/bitstream/123456789/4861/1/Internet%20Multimedia%20Communications%20Using%20S  IP~tqw~_darksiderg.pdf

این کتاب هم عالیه :
http://filepi.com/i/Rv4EqV8

----------


## mohsen22

ممنون حتما می خونمشون

----------


## mohsen22

این مثال از طریق سوکت پروگرامینگ چت بین دو اپلیکیشن بوسیله امولاتور رو فراهم می کنه
خب حالا اگه بخواهیم  وب سرور داشته باشیم اونوقت چی باید بکنم؟  
مرسی

----------


## shkna1368

شما وقتی درگیر sip میشید خود ابزاری که sip رو پیاده سازی کرده،کار سوکت رو انجام میده.وقتی سرور پاش وسط میاد،شما داده ها رو بهه سرور میدید و سرور به طرف مقابلتون میرسونه.شما وقتی با استاندارد جلو میرید دیگه درگیر لایه های زیر مثل سوکت نیستید

----------


## dasssnj

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

----------


## mohsen22

ممنون از همه دوستانی که راهنمایی می کنند یا تصمیم دارند کمکم کنند!

----------


## mohsen22

بازم سلام ...مثالی رو با موفقیت تست کردم که ثبت نام و لاگین رو از طریق اسکیولایت -  ‍پی اچ پی و مای اسکیوال انجام میده .. لطفا اگه ممکنه تستش کنید و بفرمایید در ادامه چه کنم؟http://s5.picofile.com/file/81270033...QLite.rar.html

مرسی

----------


## samanbank

وایبر نسخه یک 

یک نوع شبکه irc بود که با mysql کارمیکرد 

حالا هم کلا برای خودش سرور نوشته با پایتون هم نوشته سرور رو که عکس و صوت و تصویر هم میشه منتقل کرد !!!

البته سرویس ویس وایبر کلا روی ویپ هست و براش سرور جداگونه گرفته خودش هم اینکارو نکرده به یه شرکتی داده مثل اسکایپ اینکارو براش کرده اسم شرکت هم ovh هست ovh voip یک دیتاسنتر در فرانسه 

الان هم بخواین اینکارو بکنین درامد نداره اگه بخواین سرویسی مثل لاین یا ویچت درست کنین خوبه که میشه با یک نرم افزار پایتون سرورش رو اوکی کرد 
سوکت پرورمینگ مانند یک مسنجر مثل یاهو نگاهی به سورس های پیدجین بیاندازید

----------


## mohsen22

سلام . کسی جدیدا با quickblox کار کرده ؟

----------


## mohsen22

بیدا کردممممممممممم. یه سورس توب اونم با php وmy sql..... به به.... هر کی میخواد  اعلام کنه.......

----------


## Nevercom

بسیار علاقه مند شدم ببینم چطور با MySQL و PHP پیاده سازی شده، اگه ممکنه بیشتر توضیح بدید

----------


## mohsen22

چشم... حتما... دیگه کسی مایل نیست؟ .... قیمت هم دستمه ها...  زیر صد هزار کاربر... پنجاه میلیون تومن!!... چشمک


اینم ویژگی هاش !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Features


User registration
User authentication
Adding a new friend by username
Approving a friend
Messaging with a friend in list
Shows online and offline users
Runs a background service in order to get messages even when the application is closed.
Uses notification area when a new message is received.
Quiting the application(kills the background service)

----------


## حامد مصافی

در ابتدا باید پروتکل مورد استفاده خودتونو مشخص کنید. راههای زیادی دارید ۲ مورد رو دوستان در همین تاپیک ذکر کردند.
۱- پروتکل jabber یا همون xmmp که مورد استفاده گوگل‌تالک و مسنجر فیس‌بوک هست. این پروتکل پیام‌ها رو با فرما xml ارسال می‌کنه
۲- پروتکل sip که اکثر پیام‌رسان‌ها با اون کار می‌کنند.


برای کار با xmmp یکی از کتابخانه‌های مورد مناسب رو دانلود کرده و کار رو شروع کنید. من با کتابخانه qxmmp کار کردم. خیلی پروتکل ساده و روانیه

اما پیشنهاد من استفاده از sip هست. sip امکان استفاده از rtp رو هم به شما میده. یعنی شما می‌تونید صدا و تصویر رو هم در برنامه اضافه کنید.  سمت سرور هم برای یک کار معمولی نیاز به یک asterisk یا نمونه ساده شده اون الستیکس دارید
برای این پروتکل کتابخانه‌های زیادی وجود دارند که به نظر من بهتره از کتابخانه‌های دارای اسکت rtp استفاده کنید.
دو نمونه از بهترین‌ها عبارتند از:
pjsip.org
linphone.org

با linphone کار نکردم اما pjsip امکانات خوبی برای کار در اندروید داره جز اینکه ویدئو برای اندروید در نسخه ۲.۳ اضافه خواهد شد.

جدا از اینها مطالعه ساختار پروتکل sip هم خیلی کمک می‌کنه.

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

----------


## mohammadzadeh68

کسی درباره tcp hole punching ,  و نحوه پیاده سازیش اطلاعاتی داره ؟

----------

