برمجة الشبكات باستخدام الجافا.

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

بكلمات بسيطة، يرتبط مصطلح برمجة الشبكة أو الشبكات ببرامج الكتابة التي يمكن تنفيذها عبر أجهزة كمبيوتر مختلفة، حيث يتم توصيل جميع الأجهزة ببعضها البعض لمشاركة الموارد باستخدام شبكة. سنناقش في مقالتنا التالية برمجة شبكات جافا.


ما هي شبكات جافا؟

تعطي الشبكات الكثير من القوة للبرامج البسيطة. باستخدام الشبكات، يمكن لبرنامج واحد استعادة المعلومات المخزنة في ملايين أجهزة الكمبيوتر الموجودة في أي مكان في العالم.

Java هي لغة البرمجة الرائدة التي تضع الشبكات في الاعتبار. Java Networking هي فكرة الجمع بين جهازي كمبيوتر أو أكثر معًا لمشاركة الموارد. تتم جميع اتصالات برنامج Java عبر الشبكة في طبقة التطبيق.

تتضمن حزمة java.net لواجهات برمجة تطبيقات J2SE العديد من الفئات والواجهات التي تنفذ ميزات الاتصال منخفضة المستوى، مما يتيح للمستخدم صياغة البرامج التي تركز على حل المشكلة.


دعم بروتوكولات الشبكة الشائعة.

كما ذكرنا سابقًا، تشتمل حزمة java.net الخاصة بلغة برمجة Java على فئات وواجهات مختلفة توفر وسيلة سهلة الاستخدام للوصول إلى موارد الشبكة. بخلاف الفئات والواجهات، توفر حزمة java.net أيضًا دعمًا لبروتوكولي الشبكة الشائعين. وهما:

  • بروتوكول التحكم في الإرسال (TCP).

يسمح بروتوكول التحكم في الإرسال أو بروتوكول التحكم في الإرسال بالاتصال الآمن بين التطبيقات المختلفة. TCP هو بروتوكول موجه للاتصال مما يعني أنه بمجرد إنشاء اتصال، يمكن نقل البيانات في اتجاهين. يُستخدم هذا البروتوكول عادةً عبر بروتوكول الإنترنت. لذلك، يشار إلى بروتوكول TCP / IP أيضًا باسم TCP / IP. يحتوي TCP على طرق مضمنة لفحص الأخطاء والتأكد من تسليم البيانات بالترتيب الذي تم إرسالها به، مما يجعله بروتوكولًا كاملاً لنقل المعلومات مثل الصور الثابتة وملفات البيانات وصفحات الويب.

  • بروتوكول مخطط بيانات المستخدم (UDP).

بروتوكول UDP أو بروتوكول مخطط بيانات المستخدم هو بروتوكول بدون اتصال يسمح بنقل حزم البيانات بين التطبيقات المختلفة. UDP هو بروتوكول إنترنت أبسط لا تتطلب خدمات التحقق من الأخطاء والاسترداد. في UDP، لا توجد نفقات إضافية لفتح الاتصال أو الحفاظ على الاتصال أو إنهاء الاتصال. في UDP، يتم إرسال البيانات باستمرار إلى المستلم، سواء استلمها أم لا.


مصطلحات شبكات جافا.

في شبكات جافا، يتم استخدام العديد من المصطلحات بشكل متكرر. يتم تقديم مصطلحات شبكات Java المستخدمة على نطاق واسع على النحو التالي:

  • عنوان IP.

عنوان IP هو عنوان فريد يميز جهازًا على الإنترنت أو شبكة محلية. IP تعني “بروتوكول الإنترنت”. وهو يتألف من مجموعة من القواعد التي تحكم تنسيق البيانات المرسلة عبر الإنترنت أو الشبكة المحلية. يشار إلى عنوان IP على أنه عنوان منطقي يمكن تعديله. وهي تتألف من ثماني بتات. يتراوح نطاق كل ثماني بتات من 0 إلى 255.

نطاق عنوان IP – 0.0.0.0 إلى 255.255.255.255

على سبيل المثال – 192.168.0.1

  • رقم المنفذ.

رقم المنفذ (Port) هو طريقة للتعرف على عملية معينة تربط الإنترنت أو معلومات الشبكة الأخرى عندما تصل إلى الخادم. يستخدم رقم المنفذ لتحديد التطبيقات المختلفة بشكل فريد. يعمل رقم المنفذ كنقطة نهاية اتصال بين التطبيقات. يرتبط رقم المنفذ بعنوان IP للإرسال والاتصال بين تطبيقين. يوجد 65.535 رقم منفذ، ولكن لا يتم استخدام جميعها كل يوم.

  • البروتوكول.

بروتوكول الشبكة هو مجموعة منظمة من الأوامر التي تحدد كيفية نقل البيانات بين الأجهزة المختلفة في نفس الشبكة. بروتوكولات الشبكة هي السبب الذي من خلاله يمكن للمستخدم التواصل بسهولة مع الناس في جميع أنحاء العالم وبالتالي لعب دور حاسم في الاتصالات الرقمية الحديثة. على سبيل المثالK TCP و FTP و POP وما إلى ذلك.

  • عنوان MAC.

يرمز عنوان MAC إلى عنوان التحكم في الوصول إلى الوسائط. إنه معرف غريب مخصص لـ NIC (وحدة تحكم / بطاقة واجهة الشبكة). يحتوي على عنوان 48 بت أو 64 بت، والذي يتم دمجه مع محول الشبكة. يمكن أن يكون عنوان MAC بتكوين سداسي عشري. بكلمات بسيطة، عنوان MAC هو رقم فريد يُستخدم لتتبع جهاز في الشبكة.

إقرأ أيضاً… ما هو تخصص هندسة الشبكات؟ وما هي مجالات العمل فيه؟

  • المقبس.

المقبس (Socket) هو نقطة نهاية واحدة لاتصال ثنائي الاتجاه بين التطبيقين اللذين يعملان على الشبكة. تقدم آلية المقبس طريقة للاتصال بين العمليات (IPC) من خلال تعيين نقاط اتصال مسماة يحدث الاتصال بينها. يرتبط المقبس برقم منفذ حتى تتمكن طبقة TCP من التعرف على التطبيق المراد إرسال البيانات إليه.

  • البروتوكول المهيأ للاتصال وبدون اتصال.

في الخدمة المهيأة للاتصال، يجب على المستخدم إنشاء اتصال قبل بدء الاتصال. عند إنشاء الاتصال، يمكن للمستخدم إرسال الرسالة أو المعلومات، وبعد ذلك يمكنه تحرير الاتصال. ومع ذلك، في البروتوكول غير المتصل، يتم نقل البيانات في مسار واحد من المصدر إلى الوجهة دون التحقق من أن الوجهة لا تزال موجودة أم لا أو إذا كانت جاهزة لتلقي الرسالة. المصادقة ليست ضرورية في البروتوكول غير المتصل.

مثال على بروتوكول مهيأ للاتصال (Connection-Oriented Protocol): بروتوكول التحكم في الإرسال (TCP).

مثال على بروتوكول بدون اتصال (Connection-Less Protocol): بروتوكول مخطط بيانات المستخدم (UDP)


فئات شبكات جافا.

تتضمن حزمة java.net الخاصة بلغة برمجة Java فئات متنوعة توفر وسيلة سهلة الاستخدام للوصول إلى موارد الشبكة. الفئات المشمولة في حزمة java.net مُعطاة على النحو التالي:

  • CacheRequest – يتم استخدام فئة CacheRequest في جافا كلما دعت الحاجة إلى تخزين الموارد في ResponseCache. توفر كائنات هذه الفئة حافة لكائن OutputStream لتخزين بيانات الموارد في ذاكرة التخزين المؤقت.
  • CookieHandler – تُستخدم فئة CookieHandler في Java لتنفيذ آلية رد الاتصال لتأمين تنفيذ سياسة إدارة حالة HTTP داخل معالج بروتوكول HTTP. تحدد آلية إدارة حالة HTTP آلية كيفية إجراء طلبات واستجابات HTTP.
  • CookieManager – تُستخدم فئة CookieManager لتوفير تنفيذ دقيق لـ CookieHandler. تفصل هذه الفئة تخزين ملفات تعريف الارتباط عن السياسة المتعلقة بقبول ملفات تعريف الارتباط ورفضها. يتألف مدير ملفات تعريف الارتباط من CookieStore و CookiePolicy.
  • DatagramPacket – تُستخدم فئة DatagramPacket لتوفير وسيلة لنقل الرسائل بدون اتصال من نظام إلى آخر. توفر هذه الفئة أدوات لإنتاج حزم مخطط البيانات للإرسال بدون اتصال بتطبيق فئة مقبس مخطط البيانات.
  • InetAddress – تُستخدم فئة InetAddress لتوفير طرق للحصول على عنوان IP لأي اسم مضيف. يتم التعبير عن عنوان IP برقم غير موقع 32 بت أو 128 بت. يمكن لـ InetAddress معالجة كل من عناوين IPv4 و IPv6.

إقرأ أيضاً… ما هو بروتوكول (SMTP)؟

  • ServerSocket – تُستخدم فئة ServerSocket لتنفيذ التنفيذ المستقل عن النظام من جانب الخادم من اتصال مقبس العميل / الخادم. يطرح المُنشئ لفئة ServerSocket استثناءً إذا كان لا يمكنه الاستماع على المنفذ المحدد. على سبيل المثال – سيتم طرح استثناء إذا كان المنفذ قيد الاستخدام بالفعل.
  • DatagramSocket – فئة DatagramSocket عبارة عن مقبس شبكة يوفر نقطة اتصال أقل لإرسال واستقبال الحزم. يتم توجيه وتسليم كل حزمة يتم إرسالها من مقبس مخطط بيانات بشكل فردي. يمكن أيضًا ممارستها لإرسال وقبول معلومات البث. مآخذ مخطط البيانات هي آلية جافا لتوفير اتصال الشبكة عبر UDP بدلاً من TCP.
  • Proxy البروكسي هو كائن غير متغير ونوع من الأدوات أو الطريقة أو البرنامج أو النظام، والذي يعمل على الحفاظ على بيانات المستخدمين وأجهزة الكمبيوتر الخاصة به. يتصرف مثل جدار بين أجهزة الكمبيوتر ومستخدمي الإنترنت. يمثل “كائن البروكسي” إعدادات البروكسي التي سيتم تطبيقها مع الاتصال.
  • URL – فئة URL في Java هي نقطة الدخول إلى أي مصادر متاحة على الإنترنت. يصف عنوان URL للفصل محدد موقع المعلومات، وهو إشارة إلى “مورد” على شبكة الويب العالمية. يمكن أن يشير المصدر إلى ملف أو دليل بسيط، أو يمكن أن يشير إلى كائن أكثر صعوبة، مثل استعلام قاعدة بيانات أو محرك بحث.
  • URLConnection – فئة URLConnection في Java هي فئة مجردة تصف اتصال مورد كما هو محدد بواسطة عنوان URL مشابه. تُستخدم فئة URLConnection لمساعدة غرضين مختلفين لكن مترابطين. أولاً، يوفر التحكم في التفاعل مع الخادم (خاصةً خادم HTTP) بدلاً من فئة URL. علاوة على ذلك، باستخدام URLConnection ، يمكن للمستخدم التحقق من العنوان الذي تم نقله بواسطة الخادم ويمكنه الاستجابة نتيجة لذلك. يمكن للمستخدم أيضًا تكوين حقول الرأس المستخدمة في طلبات العميل باستخدام URLConnection.

واجهات شبكات جافا.

تتضمن حزمة java.net الخاصة بلغة برمجة شبكات جافا واجهات مختلفة توفر أيضًا وسيلة سهلة الاستخدام للوصول إلى موارد الشبكة. الواجهات المضمنة في حزمة java.net هي كما يلي:

  • CookiePolicy – توفر واجهة CookiePolicy في حزمة java.net فئات لتنفيذ تطبيقات الشبكات المختلفة. يقرر أي ملفات تعريف الارتباط يجب قبولها وأيها يجب رفضه. في CookiePolicy، هناك ثلاثة تطبيقات محددة مسبقًا للسياسة، وهي ACCEPT_ALL و ACCEPT_NONE و ACCEPT_ORIGINAL_SERVER.
  • CookieStore – ملف تعريف الارتباط هو واجهة تصف مساحة تخزين ملفات تعريف الارتباط. يجمع CookieManager ملفات تعريف الارتباط إلى CookieStore لكل استجابة HTTP ويستعيد ملفات تعريف الارتباط من CookieStore لكل طلب HTTP.
  • FileNameMap – واجهة FileNameMap هي واجهة غير معقدة تنفذ أداة لتخطيط اسم ملف وسلسلة نوع MIME. يقوم FileNameMap بفرض رسوم على مخطط اسم الملف (المعروف باسم mimetable) من ملف البيانات.
  • SocketOption – تساعد واجهة SocketOption المستخدمين على التحكم في سلوك المقابس. في كثير من الأحيان، من الضروري تطوير الميزات الضرورية في Sockets. يسمح SocketOptions للمستخدم بتعيين خيارات قياسية مختلفة.
  • SocketImplFactory – تحدد الواجهة SocketImplFactory مصنعًا لمثيلات SocketImpl. يتم استخدامه بواسطة فئة المقبس لإنشاء تطبيقات مقبس تنفذ سياسات مختلفة.
  • ProtocolFamily – تمثل هذه الواجهة مجموعة من بروتوكولات الاتصال. تحتوي واجهة ProtocolFamily على طريقة تُعرف باسم name ()، والتي تُرجع اسم عائلة البروتوكول.

إقرأ أيضاً… أفضل لغات برمجة الشبكات لمهندسي الشبكات.


برمجة المقبس Socket.

تتم ممارسة برمجة Java Socket في شبكات جافا للتواصل بين التطبيقات التي تعمل على JRE المختلفة. تقوم المقابس بتنفيذ أداة الاتصال بين جهازي كمبيوتر باستخدام TCP.

يمكن أن تكون برمجة Java Socket إما موجهة للاتصال أو بدون اتصال. في برمجة Socket، تتم إدارة فئات Socket و ServerSocket لبرمجة مأخذ التوصيل الموجهة. ومع ذلك، يتم استخدام فئتي DatagramSocket و DatagramPacket لبرمجة المقبس بدون اتصال.

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

يمكن للعميل والخادم الآن التواصل عن طريق الكتابة إلى المقبس والقراءة منه. تصف فئة java.net.Socket مقبسًا، وتقوم فئة java.net.ServerSocket بتنفيذ أداة لبرنامج الخادم لاستضافة العملاء وبناء اتصالات معهم.

 خطوات إنشاء اتصال TCP بين جهازي كمبيوتر باستخدام Socket Programming.

فيما يلي الخطوات التي تحدث عند إنشاء اتصال TCP بين جهازي كمبيوتر باستخدام برمجة المقبس في شبكات جافا كما يلي:

  • الخطوة 1 – يقوم الخادم بإنشاء مثيل لكائن ServerSocket، مما يشير إلى أي اتصال رقم المنفذ سيحدث.
  • الخطوة 2 – بعد إنشاء كائن ServerSocket ، يطلب الخادم أسلوب Accept () لفئة ServerSocket. يتوقف هذا البرنامج مؤقتًا حتى يتصل العميل بالخادم على المنفذ المحدد.
  • الخطوة 3 – بعد أن يكون الخادم في وضع الخمول، يقوم العميل بإنشاء مثيل لكائن من فئة Socket، وتحديد اسم الخادم ورقم المنفذ الذي سيتم الاتصال به.
  • الخطوة 4 – بعد الخطوة أعلاه، يسعى مُنشئ فئة Socket إلى توصيل العميل بالخادم المعين ورقم المنفذ. إذا تمت مصادقة الاتصال، فسيكون لدى العميل على الفور كائن Socket بارع في التفاعل مع الخادم.
  • الخطوة 5 – على جانب الخادم ، تقوم طريقة Accept () بإرجاع إشارة إلى مقبس جديد على الخادم المتصل بمقبس العميل.

بعد استقرار الاتصالات ، يمكن أن يحدث الاتصال باستخدام تدفقات الإدخال / الإخراج. يحتوي كل كائن من فئة مأخذ التوصيل على OutputStream و InputStream. يرتبط OutputStream الخاص بالعميل بـ InputStream الخاص بالخادم، ويتم دمج InputStream الخاص بالعميل مع OutputStream الخاص بالخادم. بروتوكول التحكم في الإرسال (TCP) هو بروتوكول اتصال ثنائي الاتجاه. ومن ثم يمكن إرسال المعلومات عبر كلا التدفقات في الوقت المقابل.