هم اکنون عضو شوید

ورود

فراموشی گذرواژه

گذروازه خود را فراموش کردید ؟

ورود

عضو شوید

با عضویت در سایت از امکانات فوق العاده بهرمنده خواهید شد.

آموزش Socket در برنامه نویسی اندروید

آموزش Socket در برنامه نویسی اندروید

سلام دوستان در این سری از آموزش های برنامه نویسی اندروید به آموزش Socket در برنامه نویسی اندروید این برنامه توسط یک آیپی و port کار خواهد کرد که از خود کاربر گرفته می شود و باید در مودم خود port forwarding را فعال کنید تا برنامه کار کند و برای تست برنامه باید بروی دو گوشی که به یک وایفا متصل شده اند نصب شود سپس در هر دو گوشی آیپی مودم و port آن را وارد کرده و متصل می شوند در ادامه با ما همراه باشید.

نحوه port forwarding در مودم را در اینترنت جستجو کنید (حتما باید این کار را انجام دهید در غیر این صورت برنامه کار نخواهد کرد)

خب ابتدا باید یک کلاس درست کنیم که اعمالی رو که می خواهیم انجام دهد (ارسال داده و بررسی های لازم برای اتصال به سوکت)

پس یک کلاس به نام Client.java درست کنید کد های زیر را در آن قرار دهید ما برای اینکه بتوانیم multitask کار انجام دهیم از کلاس Async در کد پایین استفاده کردیم.

پس یک ip و یک port ورودی کلاینت ما است و یک response یا نتیجه هم بر خواهد گشت یعنی اون پیامی که کاربر ارسال می کند و از inputStream برای خواندن داده ها استفاده کردیم در صورتی که خطا دهد وارد catch شده و شما می توانید خطا را در بخش AndroidMonitor ببینید.

و بخش layout ما یا activity_main.xml همانند زیر می شود.

در اینجا ما دو EditText داریم اولی آدرس آیپی مودم و دومی شماره port است (از بخش port forwarding باید به دست بیاریدش) و یک دکمه برای اتصال و یک دکمه دگیر برای پاک کردن اطلاعت تعبیه شده و یک TextView در پایین برای نمایش response یا نتیجه .

و کد بخش MainActivity.java هم همانند زیر می شود.

کار خاصی در بالا انجام نداده ایم فقط از کلاسی که ایجاد کرده  استفاده کردیم و برای اینکه اتصال برقرار شود بعد از گرفتن آیپی و پورت Client را excute یا اجرا کردیم.

و یادتان نرود باید حتما دسترسی اینترنت را در بخش AndroidManifest.xml اضافه کنید.

 

این آموزش هم به پایان رسید.

 

موفق و موید باشید.

درباره نویسنده

با زبان های برنامه نویسی C# , Java , Php به صورت تخصصی کار کردم و بیشتر وقتم رو در برنامه نویسی می گذرونم علاقه زیادی به ساخت اپلیکیشن اندروید دارم.

نظرها ( ۴۳ )

  1. 19, جولای , 2017 در 10:53 ب.ظ

    این همه تنوع فوقالعادست .خسته نباشی

  2. 19, جولای , 2017 در 10:59 ب.ظ

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

    • محمد حسین جعفری پور
      19, جولای , 2017 در 11:07 ب.ظ

      بله میشه از dns استفاده کرد سایت های خارجی هستند که به صورت رایگان این کار رو انجام می دهند کافی است آیپی و پورت را از سایت دریافت کرده و یک برنامه ایجاد کرد البته باید بخشی از کد تغییر کند

      موفق و موید باشید.

    • محمد حسین جعفری پور
      19, جولای , 2017 در 11:08 ب.ظ

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

  3. فرزاد
    19, جولای , 2017 در 11:52 ب.ظ

    http://s9.picofile.com/file/8301057784/Untitled.png
    این ارور برای چیه.به نظر یک { کم داره اخر کدها

  4. فرزاد
    20, جولای , 2017 در 12:36 ق.ظ

    http://s9.picofile.com/file/8301061376/Untitled.png
    خواهش میکنم.ما که کپی پست میکنیم شما زحمت میکشید دست خوش
    الان هیچ اروری ندارم الا اینی که تو عکسه.در ضمن ایپی باید چی وارد کنم همونی که تو گوگل سرچ کیکنم myip میاره؟

    • محمد حسین جعفری پور
      20, جولای , 2017 در 1:03 ق.ظ

      خطا ندارید ؟
      باید Port Forwarding روی مودم خودتان انجام دهید در اینترنت سرچ کنید آموزشش هست و آیپی شما همان است ولی باید پورت را در ip forwarding تنظیم کنید خودتان از یک پورت به طور مثال ۴۰ استفاده کنید یا ۶۰۶۰٫

      موفق و موید باشید.

    • محمد حسین جعفری پور
      20, جولای , 2017 در 1:12 ق.ظ

      من کد رو یک بار دیگر آپدیت کردم ولی مشکل ندیدم دوباره بررسی کنید در صورتی که مشکل داشتید بفرمایید

  5. فرزاد
    20, جولای , 2017 در 1:13 ق.ظ

    http://s9.picofile.com/file/8301063250/khata.png
    قبلا پورت باز کردم چون یک ساله هر روز ازش استفاده میکنم و میدونم درسته.اون ارور رو با پیشنهادهای خود اندروید استودیو حل میکنم ولی موقع اجرا اتفاقی نمیافته.روی شبیه ساز و گوشی هواوی چک کردم

  6. فرزاد
    20, جولای , 2017 در 1:31 ق.ظ

    ۶۶۲۲
    هم تست زدم نشد
    ۸۱ رو هم همیشه فوروارد کرد مشکلی نداره.یک فیلم تست بذارین خوب میشه.شب بخیر

  7. امید
    20, جولای , 2017 در 12:42 ب.ظ

    برای منم جواب نداد یه جای کار میلنگه

  8. محمد
    27, جولای , 2017 در 4:40 ب.ظ

    سلام من فکر میکنم مشکل از اندروید ۶ به بالاست من خودم به شدت درگیر این موضوع هستم ایا این کد روی اندروید ۶ جواب میده و جدا از متصل شدن ارسال و دریافت اطلاعات رو هم داره ؟
    ممنون میشم جواب رو ایمیل کنید
    با تشکر

  9. مجتبی کریمی
    30, جولای , 2017 در 6:08 ب.ظ

    با سلام و سپاس از آموزشهای خوبتون

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

    مثلا یک برنامه اندروید داشته باشیم و تو یکی از اکتیویتی ها اطلاعات با استفاده از socket گرفته بشه و نمایش داده بشه و دریافت داده ها به صورت ریل تایم باشه. در واقع چیزی شبیه تلگرام.

    یک سمت برنامه اندروید و سمت دیگه یک سرور که حالا با php یا .Net نوشته شده و ارسال اطلاعات به برنامه اندروید را بر عهده داره.

    • محمد حسین جعفری پور
      30, جولای , 2017 در 7:08 ب.ظ

      به زودی آموزش را قرار میدهیم
      موفق باشید.

      • مجتبی کریمی
        30, جولای , 2017 در 11:09 ب.ظ

        ممنون از شما

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

        • محمد حسین جعفری پور
          31, جولای , 2017 در 2:00 ق.ظ

          حدودا برای هفته دیگه فکر می کنم بتونیم آموزش بدیم.
          موفق باشید.

          • مجتبی کریمی
            31, جولای , 2017 در 7:51 ق.ظ

            عالیه

            منتظر آموزش خوبتون هستیم.

          • 27, آگوست , 2017 در 1:49 ق.ظ

            جنب جعفر پور این آموزش آماده نشد بزارینش؟

          • محمد حسین جعفری پور
            27, آگوست , 2017 در 2:02 ق.ظ

            آماده شود قرار خواهد گرفت.

          • 27, آگوست , 2017 در 8:45 ق.ظ

            لطفا تو اولویت قرار بدید چون خیلی میتونه کاربردی باشه

          • محمد حسین جعفری پور
            27, آگوست , 2017 در 12:16 ب.ظ

            بله درسته

  10. رفاقت جو
    2, سپتامبر , 2017 در 4:20 ق.ظ

    آقای جعفر پور آموزش هاتون واقعا کاربردیه خدا خیرت بده واقعا کارت درسته

  11. 4, سپتامبر , 2017 در 8:41 ق.ظ

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

    • محمد حسین جعفری پور
      4, سپتامبر , 2017 در 2:02 ب.ظ

      سلام
      باید به شکل زیر باشد.

      ولی ممکن است کد deprecated شده باشد.
      موفق باشید.

  12. sina
    28, مارس , 2018 در 3:15 ب.ظ

    با سلام
    من کدی که شما نوشتین رو امتحان کردم از من ارور میگرفت که چرا متد doInBackground ؛ void هست ولی داره استرینگ بر میگردونه من به این صورت تغییرش دادم

    موفق باشید.

  13. علی رضا
    30, مارس , 2018 در 11:55 ب.ظ

    سلام من ی سوال داشتم اونم اینه ک برنامه های مثل بازار – بازی کلش – انستاگرام همشون سوکت پروگرمینگ هستن

  14. محمد
    4, آوریل , 2018 در 12:17 ق.ظ

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

    • محمد حسین جعفری پور
      5, آوریل , 2018 در 10:27 ق.ظ

      سلام و درود ما انقدرم بزرگ نیستیم که شما می فرمایید شما لطف دارید از نظر من خوندن مطالب خارجی و همینطور pdf خیلی کمک می کند کتاب های خیلی خوبی به زبان های انگیلیسی منتشر شده اند به طور مثال شما می تونید کتاب یا pdf معروف big java رو مطالعه کنید که فکر می کنم الان edition 7 باید منتشر شده باشد دیدن فیلم های آموزشی خارجی هم خیلی مفیده .
      موفق باشید.

  15. قائمی
    9, آوریل , 2018 در 7:33 ب.ظ

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

  16. قائمی
    9, آوریل , 2018 در 7:49 ب.ظ

    من خیلی عجله دارم واسه این پروژه اگه مقدور به پاسخگویی هستین لطف کنین اعلام کنید!

    • محمد حسین جعفری پور
      9, آوریل , 2018 در 8:12 ب.ظ

      اگر در آن سمت از Router استفاده کنید و بتوانید port forwarding را انجام دهید می توانید از همین آموزش استفاده کنید و اگر سرور جاوا باشد فرق می کند اگر سرور بر بستر وب باشد باز هم فرق می کند.

      • قائمی
        9, آوریل , 2018 در 11:38 ب.ظ

        در آن سمت فقط یک ماژول وای فای هست

  17. آرمین
    3, مارس , 2019 در 2:00 ب.ظ

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

  18. 26, اکتبر , 2020 در 5:07 ب.ظ

    سلام استاد خسته نباشید ، چطور میتونیم با استفاده از سوکت dns گوشی کاربر رو تغییر بدیم ؟