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

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

در این مقاله ی آموزشی من سعی میکنم کلا درباره ی برنامه نویسی سوکت یا سوکت پروگرمینگ باهاتون صحبت کنم .

موضوعات زیر در این مقاله پوشش داده میشود :‌

  • برنامه نویسی سوکت در زبان جاوا چیست ؟‌
  • سوکت در زبان جاوا چیست ؟‌
  • برنامه نویسی کلاینت یک سوکت
  • برنامه نویسی یک سوکت سرور

 

برنامه نویسی سوکت در زبان جاوا چیست ؟‌

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

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

زمانی که درخواست کلاینت به سرور میرسد . سوکت سرور یک listener سوکت را فراهم میکند . کلاس های سوکت و سوکت سرور برای برنامه نویسی ارتباط گرا استفاده میشوند . 

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

 

سوکت در زبان جاوا چیست ؟‌

یک سوکت در زبان برنامه نویسی جاوا بعنوان یک endpoint یا نقطه ی پایانی برای پیوند ارتباطی دو طرفه  بین دو برنامه در یک شبکه است . 

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

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

 

هر endpoint که بالا نیز به آن اشاره کردیم دارای یک شماره پورت و یک ip است . پکیجی در پلتفرم جاوا یک کلاسی را فراهم میکند .

Socket که یک طرف ارتباط دو طرفه ی بین برنامه ی جاوایی شما و برنامه ی دیگر که درون یک شبکه قرار دارند را فراهم میکند . 

کلاس مورد نظر در بالاترین بخش پیاده سازی قرار میگیرد و جزئیات هر سیستم خاص را از برنامه جاوا شما مخفی می کند.

با استفاده از این کلاس و عدم تکیه بر کدنویسی دستی  برنامه ی جاوایی شما میتواند بصورت platform-independent بر روی شبکه کار کند . 

 

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

 

برنامه نویسی سمت کلاینت در سوکت 

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

بعد از آن کلاینت منتظر میماند تا پاسخ سرور را دریافت بکند . خب این منطق اصلی پیاده سازی سمت کلاینت بود اما بیایید کمی جزئی تر وارد بحث برنامه نویسی سمت کلاینت و سمت سرور برای سوکت بشیم . 

برای پیاده سازی درخواست کلاینت باید قدم های زیر را طی کنید :‌

  1. ایجاد یک اتصال 

    اولین قدم ایجاد یک اتصال سوکت است . اتصال سوکت بین دو عدد ماشین به اطلاعات آنها بستگی دارد باید IP آدرس همدیگر و پورت TCP همدیگر را بدانند.
    شما با خط کد زیر میتوانید یک سوکت ایجاد کنید 
    Socket socket = new Socket(“127.0.0.1”, 5000)​

    در این تکه کد اولین آرگومان نشان دهنده ی IP مربوط به سرور سوکت است و دومین پورت TCP است که در مثال بالا عدد 5000 است.

  2. تبادل اطلاعات 

    به منظور تبادل اطلاعات در یک اتصال سوکت از stream ها برای دریافت و ارسال اطلاعات استفاده میشود . پس از برقراری اتصال و ارسال درخواست ها ، باید ارتباط را ببندید.

  3. بستن ارتباط


    اتصال سرور بصورت یک پیام واضح به سرور ارسال میشود و سپس ارتباط قطع میشود . 

خب حالا با هم دیگر کدهای نوشته شده با زبان جاوا برای برقراری سوکت در سمت کلاینت را میبینیم ‌ :‌

// 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);
}
}

 

خب حالا وقت این رسیده که بریم سمت سرور و ببینیم که در برنامه نویسی سوکت با جاوا چطور میتوانیم سمت سرور را پیاده سازی کنیم . 

 

برنامه نویسی سمت سرور سوکت یا سوکت سرور 

اساسا سمت سرور آبجکت نمونه سازی میشود و سپس منتظر درخواست کلاینت میماند . وقتی که درخواست کلاینت به سرور رسید سرور نیز پاسخ متناسب را به کلاینت میدهد . 

برای کدنویسی اپلیکیشن سمت سرور نیاز به دو سوکت است که به شرح زیر است :‌

  1. یک ServerSocket که منتظر کلاینت میماند ( زمانی که کلاینت Socket() جدید میسازد )
  2. یک سوکت قدیمی ساده برای برقراری ارتباط با کلاینت

 

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

تبادل اطلاعات 

متد 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 هم میتوانید در ترمینال درونی نتیجه را ببینید به پایان این مقاله رسیدیم و امیدوارم را با خواندن این مقاله دید خوبی و مفاهیم و نکات آموزنده ای درباره ی برنامه نویسی سوکت در زبان جاوا بدست آورده باشید.همچنین این روزها زبان جدیدی به نام کاتلین سروصدای زیادی کرده است و کم کم درحال جایگزین شدن با زبان جاوا است اگر چه جاوا همچنان زبانی پایدار و زیبا خواهد ماند ولی در بسیاری از بخش ها وظایف خود را به کاتلین میسپارد تا کاتلین با عملکردی بهتر در خدمت برنامه نویسان باشد. هم اکنون زبان کاتلین روی ماشین مجازی جاوا اجرا میشود و جزئی از جاوا میباشد ولی در مباحثی مثل برنامه نویسی اندروید تقریبا جاوا را کنار زده و امروزه ما میتوانیم به راحتی در محیط اندروید استودیو کدهای کاتلین را در کنار کدهای جاوا بنویسیم و بدون مشکل کار کند و حتی شما میتوانید از مبدل جاوا به کاتلین درون اندروید استودیو استفاده کنید و کدهای قدیمی جاوا را به کاتلین تبدیل کنید.

لینک کوتاه این مقاله : https://avasam.ir/post/119
این سیستم برپایه ی علاقه مندی شما یک دوره ی مناسب به شما پیشنهاد میدهد
مرا بسوی بهترین دوره ی آموزشی که برای من مناسب است هدایت کن 🤖
برای استفاده ی دیگران و حمایت از ما در جامعه های زیر به اشتراک بگذارید

.:: نظرهای کاربران ::.
امیر / 3 سال پیش

واقعا کامل و عالی،خیلی مفید

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