برمجة الشبكات بالجافا حيث يتم ربط عدد من الأجهزة بعضها ببعض عن طريق شبكة واحدة، ولكي يتم تنفيذ هذا الأمر لابد من وجود لغة يتم إجراء البرمجة بها لكي تكون صحيحة، فقد أصبح من السهل الآن ربط أجهزة الكمبيوتر بأقفال الأبواب وأجراس الأبواب، وكذلك بالأدوات الكهربائية المنزلية وأي من الأجهزة التي ترغب في وضعها، منا يجعل اسمها شبكة، وترتبط مع بعضها بلغة البرمجة وهنا سوف نتحدث عن اختبار لغة جافا في برمجة الشبكات، فهيا بنا نتعرف على أشعة الجافا وكل ما يتعلق بها.
ما هي شبكات جافا؟
تمنح الشبكات الكثير من الأهمية للبرامج البسيطة من أجل استخدام الشبكات، حيث يتمكن برنامج واحد من استعادة المعلومات التي تم تخزينها في ملايين أجهزة الكمبيوتر التي تتواجد في أي مكان في العالم.
تعتبر Java هي لغة البرمجة الرائدة للشبكات وذلك لأن Java Networking هي في الأساس فكرة للجمع بين جهازي كمبيوتر أو أكثر من أجل مشاركة الموارد.
تتضمن حزمة java.net المستخدمة لواجهات برمجة تطبيقات J2SE الكثير من الفئات والواجهات، والتي تساعد في توضيح ميزات الاتصال منخفضة المستوى، وهذا ما يتيح للمستخدم فرصة صياغة البرامج التي تركز على حل المشكلة.
برمجة الشبكات بالجافا
تشتمل حزمة java.net الخاصة بلغة برمجة Java على مجموعة من فئات وواجهات مختلفة، وهي تعمل كوسيلة للوصول إلى موارد الشبكة، ودعم بروتوكولات الشبكة الشائعة، والذي يتكون من فئتين هما:
بروتوكول التحكم في الإرسال (TCP)
يتيح لك بروتوكول التحكم في الإرسال الاتصال الآمن بين التطبيقات المختلفة، وهذا بسبب:
- يعد بروتوكول موجه للاتصال وهذا بالضرورة يعني إمكانية نقل البيانات في اتجاهين.
- يعمل هذا البروتوكول عبر مجموعة بروتوكولات الإنترنت، وهذا ما يجعله يعرف كذلك باسم TCP / IP.
- يحتوي TCP على مجموعة طرق مخصصة لفحص الأخطاء وكذلك التأكيد من تسليم البيانات بشكل منظم ومرتب حتى ترسل بها الشبكات، كما أنه توجد إمكانية نقل المعلومات الأخرى مثل ملفات البيانات الثابتة، وصفحات الويب،
بروتوكول مخطط بيانات المستخدم (UDP)
يسمى كذلك بروتوكول مخطط بيانات المستخدم، ويعمل دون اتصال يسمح بمرور ونقل حزم البيانات بين التطبيقات المختلفة:
- UDP هو بروتوكول إنترنت بسيط من حيث إنه لا يتطلب خدمات التحقق من الأخطاء والاسترداد.
- لا يتم دفع أي نفقات إضافية لفتح الاتصال أو من أجل الحفاظ على الاتصال أو الإنهاء من الاتصال.
- داخل بروتوكول UDP يتم إرسال البيانات بشكل مستمر إلى المستلم، سواء قام باستلامها أم لم يقم بذلك.
مصطلحات شبكات جافا
لكل لغة برمجة مصطلحات خاصة بها يتم استخدامها بشكل متكرر، وعند التحدث عن برمجة الشبكات بالجافا لابد من عرض هذه المصطلحات وهي كالتالي:
عنوان IP
عنوان يميز الجهاز على الإنترنت أو شبكة محلية، وهو يعني “بروتوكول الإنترنت”، كما أنه يتألف من مجموعة من القواعد المحكمة التي تحكم شكل تنسيق البيانات التي تم إرسالها عبر الإنترنت أو الشبكة المحلية.
كما يشار إلى عنوان IP بعنوان منطقي يمكن تعديله، وهذا العنوان يتألف من ثماني بتات، ويجب العلم أن نطاق كل ثماني بتات يتراوح ما بين من 0 إلى 255.
رقم المنفذ
وهو ال (Port) يستخدم في التعرف على عملية معينة تكون مرتبطة بالإنترنت أو معلومات الشبكة الأخرى وهذا فينا يخص الخادم.
كما أن رقم المنفذ يستخدم في تحديد التطبيقات المختلفة بشكل فريد، حيث يعمل كنقطة نهاية اتصال بين التطبيقات.
من الهام معرفة أنه يوجد 65.535 رقم منفذ، ولكن لا تستخدم جميعها كل يوم، ورقم المنفذ بعنوان IP للإرسال والاتصال بين تطبيقين.
البروتوكول
هو مجموعة منظمة من الأوامر التي تستخدم في تحديد كيفية نقل البيانات المختلفة بين الأجهزة في نفس الشبكة.
حيث يعد بروتوكولات الشبكة هي التي تساعد وتسهل وتستخدم في التواصل مع الناس في جميع أنحاء العالم، مما يجعلها تلعب دور حاسم في مجال الاتصالات الرقمية الحديثة.
عنوان MAC
هو عنوان التحكم في الوصول إلى الوسائط، حيث إن له معرفة غريبة مخصصة لـ NIC وهي تعرف ب(وحدة تحكم / بطاقة واجهة الشبكة) مما يجعله يُستخدم لتتبع جهاز في الشبكة.
كما يحتوي على عنوانين يتم دمجه مع محول الشبكة ومنها 48 بت أو 64 بت، ويمكن كذلك أن يكون عنوان MAC يتشكل ويتكون من سداسي عشري.
المقبس
يعد هو نقطة النهاية الواحدة في الاتصال ثنائي الاتجاه بين التطبيقين وهما اللذين يعملان على الشبكة، حيث يرتبط المقبس برقم منفذ لكي تتمكن طبقة TCP من إدراك والتعرف على التطبيق المراد إرسال البيانات إليه.
لهذا تقوم آلية المقبس طريقة فعالة للاتصال بين العمليات (IPC) وهذا من خلال تعيين نقاط اتصال محددة يحدث الاتصال بينها.
البروتوكول المهيأ للاتصال وبدون اتصال
يجب على المستخدم إنشاء مجموعة اتصال قبل بدء الاتصال، وهذا عند إنشاء الاتصال، حيث يمكن للمستخدم إرسال الرسالة أو المعلومات، ويمكن أن يقوم بتحرير الاتصال.
أما في البروتوكول غير المتصل، يتم نقل مختلف البيانات في مسار واحد بين المصدر والوجهة دون التحقق من وجود أو عدم وجود الوجهة أو أنها جاهزة لتلقي الرسالة أم لا، لهذا فإن المصادقة ليست ضرورية في البروتوكول غير المتصل.
فئات شبكات جافا
تحتوي حزمة java.net الخاصة بلغة برمجة الشبكات بالجافا على فئات متنوعة توفر وسيلة سهلة الاستخدام من أجل الوصول إلى موارد الشبكة. حيث إن الفئات المشمولة في حزمة java.net تكون مقدمة على النحو التالي:
- CacheRequest:
تستخدم هذه الفئة في جافا كلما كان هناك حاجة إلى تخزين الموارد في ResponseCache، كما أنها توفر كائنات هذه الفئة الحافة لمجموعة كائنات OutputStream حتى يتم تخزين بيانات الموارد داخل ذاكرة التخزين المؤقت.
- Cookies Handler
وتستخدم هذه الفئة من أجل تنفيذ آلية رد الاتصال، وذلك من أجل التأكد من تأمين تنفيذ سياسة إدارة حالة HTTP والتي تكون داخل معالج بروتوكول HTTP، كما أنها تحدد آلية إدارة حالة HTTP وآلية القيام بإجراء طلبات واستجابات HTTP.
- CookieManager:
تستخدم هذه الفئة من أجل توفير تنفيذ دقيق لـ CookieHandler، لأن هذه الفئة تفصل في تخزين ملفات تعريف الارتباط بصورة عن السياسة المتعلقة بقبول ملفات تعريف الارتباط ورفضها، لهذا فإن مدير ملفات تعريف الارتباط يتألف من CookieStore و CookiePolicy.
- DatagramPacket
وتستخدم هذه الفئة من أجل توفير وسيلة لنقل الرسائل بدون اتصال بين النظم المختلفة، كما توفر هذه الفئة أدوات من أجل إنتاج حزم مخطط البيانات، وهذا لكي يتم إرسال البيانات دون اتصال بتطبيق فئة مقبس مخطط البيانات.
- InetAddress:
تستخدم هذه الفئة من أجل توفير طرق للحصول على عنوان IP من أي اسم مضيف، ومن الهام معرفة أن التعبير عن عنوان IP يكون برقم غير موقع 32 بت أو 128 بت، كما يمكن لهذه الفئة معالجة كل من عناوين IPv4 و IPv6.
- ServerSocket:
تستخدم هذه الفئة لكي يتم تنفيذ المستقل عن النظام من جانب الخادم من اتصال المقبس بين العميل / الخادم، كما يطرح المُنشئ استثناءً في حالة كان لا يمكنه الاستماع على المنفذ المحدد.
- URLConnection:
هي فئة مجردة تصف أي اتصال مورد كما هو محدد من خلال عنوان URL مشابه، كما أنها تُستخدم في مساعدة غرضين مختلفين لكن مترابطين، وهما:
- يوفر التحكم في التفاعل مع الخادم (خاصةً عند استخدم خادم HTTP) بدلاً من استخدام الفئة URL.
- تمكن المستخدم من التحقق من العنوان الذي تم نقله عن طريق استخدام الخادم وهذا يمكنه من الاستجابة نتيجة لذلك، كما يمكن للمستخدم تكوين حقول الرأس المستخدمة وهذا فيما يتعلق بطلبات العميل باستخدام فئة URLConnection.
واجهات شبكات جافا
تتضمن برمجة الشبكات بالجافا واجهات مختلفة توفر وسيلة بسيطة الاستخدام من أجل الوصول إلى موارد الشبكة. الواجهات والتي تتضمنها حزمة java.net والتي تكون كالتالي:
- CookiePolicy:
توفر حزمة فئات الجافا الخاصة بتنفيذ تطبيقات الشبكات المختلفة، والتي يقرر أي ملفات تعريف الارتباط بها من أجل قبلها أو رفضها، وهناك ثلاثة تطبيقات محددة لاستخدام هذه السياسة، وهي ACCEPT_ALL و ACCEPT_NONE و ACCEPT_ORIGINAL_SERVER.
- CookieS store:
واجهة ملف تعريف الارتباط والذي يصف مساحة تخزين ملفات تعريف الارتباط، حيث إنه يقوم بجمع ملفات تعريف الارتباط إلى CookieStore حتى استجابة HTTP وبعد ذلك يستعيد ملفات تعريف الارتباط من CookieStore مرة أخرى عند كل طلب HTTP.
- FileName Map:
هي واجهة غير معقدة تستخدم لكي يتم تنفيذ أداة لتخطيط اسم ملف وسلسلة نوع MIME، كما أنه يقوم بفرض رسوم على مخطط اسم الملف والذي يعرف باسم ( mimetable) من ملف البيانات.
- SocketOptions:
تساعد هذه الواجهة جميع المستخدمين في التحكم في سلوك المقابس في معظم الأحيان، من الهام معرفة أن تطوير الميزات الضرورية في Sockets. يسمح للمستخدمين بتعيين خيارات قياسية مختلفة.
- SocketImplFactory:
تعد هذه الواجهة مصنعًا لمثيلات SocketImpl، فهي تستخدم بواسطة فئة المقبس من أجل إنشاء تطبيقات مقبس تنفذ سياسات مختلفة.
- ProtocolFamily:
تمثل هذه الواجهة عدد كبير من بروتوكولات الاتصال بل إنها تكون مجموعات، وهي تحتوي على طريقة تُعرف باسم name، والتي يرتبط اسمها باسم عائلة البروتوكول.
برمجة المقبس Socket
تستخدم برمجة Java Socket في برمجة الشبكات بالجافا وللتواصل بين التطبيقات المختلفة التي تعمل على JRE، كما تقوم المقابس بالقيام بأداة الاتصال بين جهازي كمبيوتر باستخدام TCP.
مما يمكن برمجة Java Socket إما أن تكون موجهة للاتصال أو بدون اتصال، كما أن في برمجة Socket كذلك تتم إدارة فئات Socket و ServerSocket حتى تكون البرمجة هي مأخذ التوصيل الموجهة.
لهذا يتم استخدام فئتي DatagramSocket وDatagramPacket من أجل تحقيق برمجة المقبس بدون اتصال.
ومن الهام معرفة أنه يمكن للعميل والخادم التواصل الآن عن طريق الكتابة إلى المقبس والقراءة منه، وتعد java.net.Socket تصف مقبسًا، وتقوم كذلك بتنفيذ أداة استخدام لبرنامج الخادم لاستضافة العملاء والقيام ببناء اتصالات معهم.
خطوات إنشاء اتصال TCP بين جهازي كمبيوتر باستخدام Socket Programming
نعرض هنا الخطوات التي تحدث عند إنشاء في حالة تم اتصال TCP بين جهازي كمبيوتر بواسطة برمجة المقبس في شبكات جافا كما يلي:
- الخطوة الأولى: يقوم الخادم بإنشاء مثيل لكائن ServerSocket، وهذا مما يشير إلى أي اتصال سيحدث من رقم المنفذ.
- الخطوة الثانية: بعد القيام بإنشاء كائن ServerSocket، سوف يطلب الخادم القبول لفئة ServerSocket، لكي يتوقف هذا البرنامج مؤقتًا، ولكي يتصل العميل بالخادم عبر المنفذ المحدد.
- الخطوة الثالثة: بعد وجود الخادم في وضع الخمول، يقوم العميل بعمل مثيل لكائن من فئة Socket، ويقوم بتحديد اسم الخادم ورقم المنفذ الذي عليه الاتصال به.
- الخطوة الرابعة: يقوم مُنشئ فئة Socket بتوصيل العميل بخادم معين ورقم منفذ محدد، وذلك في حالة تمت مصادقة الاتصال، مما يجعل لدى العميل على الفور كائن Socket بعد بارعاً في التفاعل مع الخادم.
- الخطوة الخامسة: على جانب الخادم تكون طريقة Accept يقوم بإرجاع إشارة منه إلى مقبس جديد عبر الخادم المتصل بمقبس العميل.
بعد ذلك يكون استقرار الاتصالات، كما يمكن أن يحدث الاتصال بواسطة تدفقات الإدخال / الإخراج، حيث يحتوي كل كائن من فئة مأخذ التوصيل على OutputStream و InputStream.
ويكون ارتباط OutputStream الخاص بالعميل بـ InputStream وهو خاص بالخادم، كما يتم دمج InputStream الخاص بالعميل مع OutputStream الخاص بالخادم.
ويعد بروتوكول التحكم في الإرسال (TCP) هو بروتوكول يستخدم من أكل اتصال ثنائي الاتجاه، وهذا ما يمكن إرسال المعلومات عبر مختلف التدفقات في الوقت المقابل.
وصلنا معكم لنهاية تعرفنا على برمجة الشبكات بالجافا والذي يستخدم في برمجة عدد كبير من التطبيقات وغيرها، لما له من فئات متعددة ومختلفة، كما قمنا بعرض مجموعة من أهم مصطلحات لغة الجافا.