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

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


اشتراک گذاری :

۱۳۹۸/۷/۱۵- تعداد بازدید : ۱۶۵۵ بار - دسته بندی : مقالات عمومی برنامه نویسی

برنامه نویسی سوکت در زبان جاوا زمانی کاربرد دارد که دو اپلیکیشن نوشته شده در دو 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 هم میتوانید در ترمینال درونی نتیجه را ببینید 

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

تمام  


محصولات برگزیده مناسب شما
مطالب زیر ممکن است برای شما مفید باشد
طراحی های پیچیده اپلیکیشن های اندرویدی با Constraint Layout آموزش کامل کار با Retrofit 2.x بعنوان یک کلاینت REST مقایسه بین react Native و Kotlin بررسی اپلیکیشن دیجی کالا - کشف زبان برنامه نویسی این اپلیکیشن 6 دلیل برای یادگیری کاتلین
مدرس : مهندس عباس نیک زاد
سوابق تحصیلی
  • دیپلم ریاضی و فیزیک از تیزهوشان
  • لیسانس کارشناسی مهندسی نرم افزار
  • کارشناس ارشد هوش مصنوعی
  • دارای مدرک IELTS نمره ۷/۵
  • دارای مدرک GMAT نمره ۷۲۰
سوابق شغلی
  • مدیر کل شرکت آوای هوشمند سام به شماره ثبت ۴۴۸۳۸ و شناسه ی ملی ۱۴۰۰۶۷۷۷۰۵۱
  • تدرس در دانشگاه ها و آموزشگاه های معتبر از سال ۱۳۹۴
  • مدرس دوره های آموزشی در زمینه ی برنامه نویسی از سال ۹۵ ( آواسام ، سامنتا )
  • مدیر کل انجمن علمی دانشگاه به مدت یکسال و مدیر انجمن علمی کامپیوتر به مدت یکسال
  • برنامه نویس اپلیکیشن های اندرویدی مختلف برای سازمان های دولتی ، شرکت های خصوصی و ...
  • بازی سازی با انجین یونیتی به مدت دو سال در تیم k2games
  • برنامه نویسی و طراحی وب بصورت فریلنسر از سال ۱۳۹۰
تخصص ها
  • تسلط کامل بر فریمورک های PHP همچون Codeigniter , Laravel , Yii , ….
  • برنامه نویسی موبایل و تبلت های هوشمند اندرویدی به مدت ۴ سال با زبان Java kotlin objective-c javascript
  • مسلط به مفاهیم گرافیکی و نرم افزار های گرافیکی Photoshop , corel , illustrator و …
  • مسلط به مدلسازی سه بعدی Blender
  • مسلط به بازی سازی و زبان سی شارپ در انجین Unity3D
  • تسلط کامل بر مفاهیم هوش مصنوعی
  • متخصص در زمینه لینوکس
  • تسلط کامل برنامه نویسی زبانهای C , Python , C++ , C# , Java , JavaScript
  • تسلط کامل بر فریمورک ها یا کتابخانه های محبوب جاوااسکریپت نظیر Angular , Vue.js , React , Jquery و …
  • مطالعه و فعالیت در زمینه ی امنیت و هک

برچسب ها : سوکت برنامه نویسی سوکت آموزش برنامه نویسی سوکت سوکت پروگرمینگ socket programming آموزش سوکت پروگرمینگ آموزش socket programming آموزش برنامه نویسی سوکت در جاوا آموزش سوکت نویسی در جاوا آموزش ساخت کلاینت سوکت آموزش ساخت سرور سوکت سوکت چیست ؟ سوکت سرور چیست ؟‌ کلاینت چیست سوکت نویسی چیست ؟ سوکت پروگرمینگ چیست ؟‌ دیجیکالا برنامه نویسی اندروید اندروید جاوا کاتلین

برای نوشتن نظر باید وارد شوید ورود

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