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

سلام دوستان در این سری از آموزش های برنامه نویسی اندروید به آموزش Socket در برنامه نویسی اندروید بخش دوم می پردازیم در مطلب قبلی خیلی از دوستان اشاره کردن که برنامه به درستی کار نمی کند با بررسی که انجام دادم متوجه شدم در بیشتر مودم ها این قابلیت وجود ندارد به همین منظور امروز پست آموزشی دیگری را در همین رابطه ایجاد کردیم در ادامه با ما همراه باشید.
در این بار ما دو تا اپلیکیشن جدا درست می کنیم کی یکی از آنها سرور و دیگری Client می باشد و باید بروی دو گوشی یا Emulator اجرا شود البته دقت کنید که باید به یک مودم وصل شوند یا یکی از گوشی ها Hotspot شود و گوشی دیگری به آن وصل شود  و در هر صورت باید یک آیپی وصل شده باشند.
 
قبل از هرچیز وارد فایل AndroidManifest.xml شده دسترسی های زیر را اضافه کنید.

حالا می خواهیم بخش سرور را پیاده سازی کنیم.
در بخش activity_main.xml کد های زیر را قرار دهید.

همانطور که میبینید فقط شامل یک textView می باشد چون فقط در بخش سرور می خواهیم پیام رو از Client دریافت کنیم.
سپس یک فایل به نام Server.java ایجاد کنید.

در بالا ما از serverSocket  استفاده کردیم serverSocket  برای ارتباط های Tcp و Udp استفاده می شود و به یک پورت گوش میدهد  (listen) یعنی پس به صورت معمول ما نیاز به آیپی نداریم و فقط کافی است به یک آیپی وصل شده باشیم خودش آیپی ادرس را به دست می آورد و در بالا ما از پورت 6000 استفاده کردیم شما باید این پورت را باز کنید در ادامه نحوه باز کردن این پورت را به شما آموزش می دهیم البته دقت کنید کار کردن بروی پورت Emualtor کمی فرق دارد در ادامه توضیح خواهم داد.
حالا زمان این است اپلیکیشن دوم خودمان را که Client  باشد ایجاد کنیم.
دسترسی های مانند قبل است پس آنها را اضافه کنید.
یک فایل به نام activity_main.xml ایجاد کرده کدهای زیر را در  آن قرار دهید.

شامل یک EditText برای دریافت ورودی از کاربر و یک دکمه برای ارسال داده است.
حالا یک فایل به نام Client.java ایجاد کرده و کد های زیر را در آن قرار دهید.

در بالا اگر دقت کنید شماره port فرق می کند ! علت آن به خاطر این است که وقتی شما دو emualtor بروی یک pc اجرا می کنید هر Emulator به یک آیپی آدرس و پورت مشخص متصل می شود حالا چاره کا را باید اینطور که توضیح میدهم حل کنید در بالا نباید SERVER_IP اگر می خواهید در emulator اندروید استودیو استفاده کنید تغییر دهید این آیپی پیشفرض مجازی ساز اندروید استودیو است !
ابتدا برنامه اول را بروی Emulator اجرا کنید منظورم server است حالا cmd را باز کنید وارد پوشه adb شوید به صورت معمول در ریشه زیر نصب می شود.

و در cmd کد زیر را قرار دهید.

Enter را بزنید حالا کد زیر را اجرا کنید

برای شما یک شماره پورت می نویسد port می نویسد حالا باید آن پورت را بر دارید و به بخش کد Server.java رفته و در قسمت SERVERPORT آن را وارد کنید این می شود پورت سرور شما حالا این Emualtor را نبندید برنامه دوم را در یک Emulator دیگه اجرا کنید سپس دوباره وارد دستور adb devices را اجرا کنید هم اکنون دو پورت به شما نمایش داده می شود پورت دومی را برداشته و وارد Client.java شده و در SERVERPORT قرار دهید حالا زمان redirect کردن یا PortForwarding است .
حالا در همان مسیری که هستید کد زیر را اجرا کنید. (در صورتی که با خطا مواجه شدید باید از قسمت programs and features باید Telent را فعال کنید به صورت معمول در بیشتر ویندوز ها این قابلیت خاموش است اگر نتونستید فعالش کنید در اینترنت یک سرچی بزنید)

Enter را زده اگر پیغام خطا مواجه شدید پورت را به 5037 تغییر دهید.

در اینجا پورت 5000 را به 6000 redirect کردیم شما باید دو پورتی را که به دست آوردید در اینجا قرار دهید
تست برنامه !

حالا دوستانی که می خواهند روی دو گوشی تست کنن ! باید port Forwarding انجام دهند و پورت ها را در دو جا یکی قرار دهند.
 
این آموزش هم پایان رسید.
 
موفق و موید باشید.

مطالعه بیشتر