ورود / ثبت نام سبد خرید 0
برنامه نویسی سوکت در زبان جاوا زمانی کاربرد دارد که دو اپلیکیشن نوشته شده در دو JRE متفاوت بخواهند با همدیگر ارتباط برقرار کنند .
این ارتباط میتواند ارتباط-گرا باشد یا اصلا نباشد . جلوتر بیشتر توضیح میدیم .
در کل سوکت نویسی یا برنامه نویسی سوکت برای برقرار کردن ارتباط یک کلاینت با یک سرور مورد استفاده قرار میگیرد .
در این مقاله ی آموزشی من سعی میکنم کلا درباره ی برنامه نویسی سوکت یا سوکت پروگرمینگ باهاتون صحبت کنم .
موضوعات زیر در این مقاله پوشش داده میشود :
برنامه نویسی سوکت در زبان جاوا چیست ؟
سوکت پروگرمینگ یا برنامه نویسی سوکت روشی است که توسط آن میتوان دو عدد node را در یک شبکه به هم دیگر متصل کرد و اطلاعات بین آنها مبادله کرد . یک سوکت ( یا همان node ) روی یک ip و یک port مشخص تمرکز میکند . سوکت های دیگر نیز برای خود همین موارد مشخص را دارند تا بتوانند با همدیگر یک اتصال ایجاد کنند .
زمانی که درخواست کلاینت به سرور میرسد . سوکت سرور یک listener سوکت را فراهم میکند . کلاس های سوکت و سوکت سرور برای برنامه نویسی ارتباط گرا استفاده میشوند .
حالا بیایید با مفهوم اصلی برنامه نویسی سوکت آشنا شویم .
سوکت در زبان جاوا چیست ؟
یک سوکت در زبان برنامه نویسی جاوا بعنوان یک endpoint یا نقطه ی پایانی برای پیوند ارتباطی دو طرفه بین دو برنامه در یک شبکه است .
هر سوکت به یک شماره پورت محدود شده است پس لایه ی TCP میتواند بفهمد کدام برنامه چه چیزی را میخواهد ارسال کند .
هر endpoint که بالا نیز به آن اشاره کردیم دارای یک شماره پورت و یک ip است . پکیجی در پلتفرم جاوا یک کلاسی را فراهم میکند .
Socket که یک طرف ارتباط دو طرفه ی بین برنامه ی جاوایی شما و برنامه ی دیگر که درون یک شبکه قرار دارند را فراهم میکند .
کلاس مورد نظر در بالاترین بخش پیاده سازی قرار میگیرد و جزئیات هر سیستم خاص را از برنامه جاوا شما مخفی می کند.
با استفاده از این کلاس و عدم تکیه بر کدنویسی دستی برنامه ی جاوایی شما میتواند بصورت platform-independent بر روی شبکه کار کند .
حالا ما فهمیدیم که سوکت در زبان جاوا یعنی چی ! حالا بریم سراغ اینکه چطور یک کلاینت و یک سرور بسازیم که کلاینت درخواستش را به سمت سرور ارسال کند و سرور پاسخ لازم را بدهد .
برنامه نویسی سمت کلاینت در سوکت
در سمت کلاینت ابتدا کلاینت باید منتظر بماند تا سرور استارت شود زمانی که سرور آماده ی کار بود کلاینت یک درخواستی را به سمت سرور ارسال خواهد کرد .
بعد از آن کلاینت منتظر میماند تا پاسخ سرور را دریافت بکند . خب این منطق اصلی پیاده سازی سمت کلاینت بود اما بیایید کمی جزئی تر وارد بحث برنامه نویسی سمت کلاینت و سمت سرور برای سوکت بشیم .
برای پیاده سازی درخواست کلاینت باید قدم های زیر را طی کنید :
Socket socket = new Socket(“127.0.0.1”, 5000)
در این تکه کد اولین آرگومان نشان دهنده ی IP مربوط به سرور سوکت است و دومین پورت TCP است که در مثال بالا عدد 5000 است.
خب حالا با هم دیگر کدهای نوشته شده با زبان جاوا برای برقراری سوکت در سمت کلاینت را میبینیم :
// A Java program for a ClientSide import java.net.*; import java.io.*; public class ClientProgram { // initialize socket and input output streams private Socket socket = null; private DataInputStream input = null; private DataOutputStream out = null; // constructor to put ip address and port public Client(String address, int port) { // establish a connection try { socket = new Socket(address, port); System.out.println("Connected"); // takes input from terminal input = new DataInputStream(System.in); // sends output to the socket out = new DataOutputStream(socket.getOutputStream()); } catch(UnknownHostException u) { System.out.println(u); } catch(IOException i) { System.out.println(i); }// string to read message from input String line = ""; // keep reading until "Over" is input while (!line.equals("Over")) { try { line = input.readLine(); out.writeUTF(line); } catch(IOException i) { System.out.println(i); } } // close the connection try { input.close(); out.close(); socket.close(); } catch(IOException i) { System.out.println(i); } } public static void main(String args[]) { Client client = new Client("127.0.0.1", 5000); } }
خب حالا وقت این رسیده که بریم سمت سرور و ببینیم که در برنامه نویسی سوکت با جاوا چطور میتوانیم سمت سرور را پیاده سازی کنیم .
برنامه نویسی سمت سرور سوکت یا سوکت سرور
اساسا سمت سرور آبجکت نمونه سازی میشود و سپس منتظر درخواست کلاینت میماند . وقتی که درخواست کلاینت به سرور رسید سرور نیز پاسخ متناسب را به کلاینت میدهد .
برای کدنویسی اپلیکیشن سمت سرور نیاز به دو سوکت است که به شرح زیر است :
بعد از اینها شما نیاز است که پاسخ سمت سرور را به کلاینت بفرستید تا کلاینت هم متوجه شود که ارتباط برقرار است .
تبادل اطلاعات
متد getOutputStream برای ارسال خروجی از طریق سوکت استفاده میشود .
قطع ارتباط سوکت
خیلی مهم است بعد از تمام شدن کارتان ارتباط را قطع کنید
در زیر کدهای سمت سرور یک سوکت که با زبان جاوا نوشته شده است بعنوان مثالی آورده شده که میتوانید استفاده کنید :
// A Java program for a Serverside import java.net.*; import java.io.*; public class ServerSide { //initialize socket and input stream private Socket socket = null; private ServerSocket server = null; private DataInputStream in = null; // constructor with port public Server(int port) { // starts server and waits for a connection try{ server = new ServerSocket(port); System.out.println("Server started"); System.out.println("Waiting for a client ..."); socket = server.accept(); System.out.println("Client accepted"); // takes input from the client socket in = new DataInputStream( new BufferedInputStream(socket.getInputStream())); String line = ""; // reads message from client until "Over" is sent while (!line.equals("Over")) { try { line = in.readUTF(); System.out.println(line); } catch(IOException i) { System.out.println(i); } } System.out.println("Closing connection"); // close connection socket.close(); in.close(); } catch(IOException i){ System.out.println(i); } } public static void main(String args[]){ Server server = new Server(5000); } }
بعد از پیاده سازی کلاینت و سرور شما میتوانید ابتدا برنامه ی سمت سرور را اجرا کنید بعد از آن شما میتوانید برنامه ی سمت کلاینت را باز کنید و درخواستی به سمت سرور ارسال کنید .
زمانی که درخواست کلاینت به سمت سرور ارسال شد و سرور پاسخ لازم را به سمت کلاینت ارسال کرد نتیجه مثل اسکرین شات زیر خواهد بود .
1 - زمانیکه شما اسکریپت سمت سرور را اجرا میکنید سوکت اجرا میشود و منتظر کلاینت باقی می ماند تا کار خود را شروع کند .
2- سپس کلاینت به سرور متصل میشود و درخواست خود را بصورت رشته ارسال میکند
3- بعد از اینکه کلاینت یک درخواستی به سمت سرور ارسال کرد سرور به کلاینت پاسخ مناسب را ارائه میدهد
اینکه چطور سوکت نویسی یا برنامه نویسی سوکت را با جاوا انجام دهید را یاد گرفتید . همچنین شما میتوانید از برنامه را روی ترمینال یا command prompt اجرا کنید ولی در Eclipse هم میتوانید در ترمینال درونی نتیجه را ببینید
به پایان این مقاله رسیدیم و امیدوارم را با خواندن این مقاله دید خوبی و مفاهیم و نکات آموزنده ای درباره ی برنامه نویسی سوکت در زبان جاوا بدست آورده باشید
تمام
مقالات دیگر مرتبط با این مقاله ی آموزشی :
دوره های آموزشی مرتبط با این مقاله :
واقعا کامل و عالی،خیلی مفید