ورود

View Full Version : استفاده از Socket در اندروید (ارسال همزمان درخواست ها)



slr560
دوشنبه 01 بهمن 1397, 10:54 صبح
سلام خدمت دوستان
بنده به تازگی باید یه برنامه با پروتکل Socket پیاده سازی کنم
توی rest میتونید همزمان چندین request به سمت سرور ارسال کنید و جواب هر کدوم رو جداگانه بگیرید. (async)
سوال من اینجاست که آیا میشه همچین کاری با socket کرد؟ یعنی میشه توی thred های مختلف سوکت رو هندل کرد که تداخلی نداشته باشه؟
اگر امکانش هست لطفا لینکی یا توضیحی اینجا برای ارسال کنید
با تشکر

hamid_hr
دوشنبه 01 بهمن 1397, 13:09 عصر
سلام
اره امکانش هست.
سمت کلاینت هر تعداد نمونه می خواین باید بسازین و سمات سرور وقتی یک درخواست اومد باید مشخصات رو به یک تابع سرویس دهنده بده و خودش منتظر درخواست بعدی باشه
این لینک سرور با سی شارپ داره
https://www.codeproject.com/questions/111375/asynchronous-server-socket-c-continue-sending-mess

farhad_shiri_ex
دوشنبه 01 بهمن 1397, 14:39 عصر
سلام خدمت دوستان
بنده به تازگی باید یه برنامه با پروتکل Socket پیاده سازی کنم
توی rest میتونید همزمان چندین request به سمت سرور ارسال کنید و جواب هر کدوم رو جداگانه بگیرید. (async)
سوال من اینجاست که آیا میشه همچین کاری با socket کرد؟ یعنی میشه توی thred های مختلف سوکت رو هندل کرد که تداخلی نداشته باشه؟
اگر امکانش هست لطفا لینکی یا توضیحی اینجا برای ارسال کنید
با تشکر

وقتی از REST استفاده میکنید در حقیقت با پروتکل HTTP کار میکنید که یکی از لایه های کاربری OSI شبکه هست. که می تونه با post ,get ,... داده ها را دریافت کنه.
حالا اگر بخواهید از سوکت استفاده کنید حالا چه DatatStream ویا DataGram باشه فقط پروتکل دریافت و ارسال داده ها متفاوت خواهد شد. و از پروتکل Socket استفاده خواهید کرد.
پس بنابراین باید سمت سرور یک پورت را باز کنید به این ترتیب
1- Open Socket by port &IP
2- Binding socket
3- Listen Port
4- Receive Data Byte
و در سمت کلاینت اندروید:
1- Open Socket by port &IP
2- connect or accept Socket
3- Send Data Byte
می توانید با همین یک سوکت که به یک پورت متصل هست داده ها را ارسال کنید. حتی برای فریز نشدن لایه کاربری برنامه می تونید تو Thread ها ویا ThreadPool ها از این ارتباط استفاده نمایید.
البته به نوع ارتباط سوکت هم باید توجه داشته باشید.
پس نیازی به ایجاد چند سوکت ندارید. مگر در شرایطی که بخواهید چند کانال ارسال و دریافت متفاوت داشته باشید.