logo

برمجة جافا سوكيت

تُستخدم برمجة Java Switch للتواصل بين التطبيقات التي تعمل على JRE المختلفة.

يمكن أن تكون برمجة Java Switch موجهة نحو الاتصال أو أقل اتصالاً.

يتم استخدام فئات المقبس وServerSocket لبرمجة المقبس الموجهة للاتصال، ويتم استخدام فئات DatagramSocket وDatagramPacket لبرمجة المقبس بدون اتصال.

يجب أن يعرف العميل في برمجة المقبس معلومتين:

  1. عنوان IP للخادم، و
  2. رقم المنفذ.

هنا، سنقوم بإجراء اتصال أحادي الاتجاه بين العميل والخادم. في هذا التطبيق، يرسل العميل رسالة إلى الخادم، ويقرأ الخادم الرسالة ويطبعها. هنا، يتم استخدام فئتين: المقبس وServerSocket. يتم استخدام فئة المقبس للتواصل بين العميل والخادم. من خلال هذا الفصل، يمكننا قراءة وكتابة الرسالة. يتم استخدام فئة ServerSocket من جانب الخادم. تقوم طريقة Accept () لفئة ServerSocket بحظر وحدة التحكم حتى يتم توصيل العميل. بعد نجاح اتصال العميل، فإنه يقوم بإرجاع مثيل المقبس على جانب الخادم.

برمجة المقبس في جافا

فئة المقبس

يعتبر المقبس ببساطة نقطة نهاية للاتصالات بين الأجهزة. يمكن استخدام فئة المقبس لإنشاء مأخذ توصيل.

طرق مهمة

طريقةوصف
1) getInputStream العامة getInputStream ()تقوم بإرجاع InputStream المرفق مع هذا المقبس.
2) getOutputStream العامة getOutputStream ()تقوم بإرجاع OutputStream المرفق مع هذا المقبس.
3) إغلاق الفراغ المتزامن العام ()يغلق هذا المقبس

فئة ServerSocket

يمكن استخدام فئة ServerSocket لإنشاء مقبس خادم. يتم استخدام هذا الكائن لإنشاء اتصال مع العملاء.

طرق مهمة

طريقةوصف
1) قبول المقبس العام ()إرجاع المقبس وإنشاء اتصال بين الخادم والعميل.
2) إغلاق الفراغ المتزامن العام ()يغلق مأخذ الخادم.

مثال على برمجة جافا سوكيت

إنشاء الخادم:

لإنشاء تطبيق الخادم، نحتاج إلى إنشاء مثيل لفئة ServerSocket. هنا، نستخدم رقم المنفذ 6666 للاتصال بين العميل والخادم. يمكنك أيضًا اختيار أي رقم منفذ آخر. طريقة قبول () تنتظر العميل. إذا كان العملاء يتصلون برقم المنفذ المحدد، فسيتم إرجاع مثيل المقبس.

 ServerSocket ss=new ServerSocket(6666); Socket s=ss.accept();//establishes connection and waits for the client 

إنشاء العميل:

لإنشاء تطبيق العميل، نحتاج إلى إنشاء مثيل لفئة المقبس. نحتاج هنا إلى تمرير عنوان IP أو اسم المضيف للخادم ورقم المنفذ. نحن هنا نستخدم 'المضيف المحلي' لأن الخادم الخاص بنا يعمل على نفس النظام.

 Socket s=new Socket('localhost',6666); 

دعونا نرى طريقة بسيطة لبرمجة مقبس Java حيث يرسل العميل نصًا ويستقبله الخادم ويطبعه.

الملف: MyServer.java

 import java.io.*; import java.net.*; public class MyServer { public static void main(String[] args){ try{ ServerSocket ss=new ServerSocket(6666); Socket s=ss.accept();//establishes connection DataInputStream dis=new DataInputStream(s.getInputStream()); String str=(String)dis.readUTF(); System.out.println('message= '+str); ss.close(); }catch(Exception e){System.out.println(e);} } } 

الملف: MyClient.java

 import java.io.*; import java.net.*; public class MyClient { public static void main(String[] args) { try{ Socket s=new Socket('localhost',6666); DataOutputStream dout=new DataOutputStream(s.getOutputStream()); dout.writeUTF('Hello Server'); dout.flush(); dout.close(); s.close(); }catch(Exception e){System.out.println(e);} } } 
قم بتنزيل هذا المثال

لتنفيذ هذا البرنامج، افتح موجهي أوامر وقم بتنفيذ كل برنامج في كل موجه أوامر كما هو موضح في الشكل أدناه.

بعد تشغيل تطبيق العميل، سيتم عرض رسالة على وحدة تحكم الخادم.

برمجة شبكات جافا

مثال على برمجة مقبس Java (القراءة والكتابة على كلا الجانبين)

في هذا المثال، سيقوم العميل بالكتابة أولاً إلى الخادم ثم سيستقبل الخادم النص ويطبعه. ثم سيقوم الخادم بالكتابة إلى العميل وسيتلقى العميل النص ويطبعه. الخطوة مستمرة.

الملف: MyServer.java

 import java.net.*; import java.io.*; class MyServer{ public static void main(String args[])throws Exception{ ServerSocket ss=new ServerSocket(3333); Socket s=ss.accept(); DataInputStream din=new DataInputStream(s.getInputStream()); DataOutputStream dout=new DataOutputStream(s.getOutputStream()); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String str='',str2=''; while(!str.equals('stop')){ str=din.readUTF(); System.out.println('client says: '+str); str2=br.readLine(); dout.writeUTF(str2); dout.flush(); } din.close(); s.close(); ss.close(); }} 

الملف: MyClient.java

 import java.net.*; import java.io.*; class MyClient{ public static void main(String args[])throws Exception{ Socket s=new Socket('localhost',3333); DataInputStream din=new DataInputStream(s.getInputStream()); DataOutputStream dout=new DataOutputStream(s.getOutputStream()); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String str='',str2=''; while(!str.equals('stop')){ str=br.readLine(); dout.writeUTF(str); dout.flush(); str2=din.readUTF(); System.out.println('Server says: '+str2); } dout.close(); s.close(); }}