Java التعامل مع الشبكات في جافا

مفهوم برمجة الشبكات في جافا

شبكة تعني Network في اللغة الإنجليزية, الفكرة الأساسية من الشبكات هي ربط الأجهزة على إختلاف أنواعها مع بعض لخلق نوع من التواصل فيما بينهم. فمثلاً الأجهزة الموصولة على الشبكة سواء كانت كمبيوترات أو هواتف أو سيرفرات, يمكنها مشاركة البيانات مع بعضها البعض بواسطة برامج معينة.

برمجة الشبكات ( Network Programming ) تعني كتابة برنامج يشارك بياناته مع برنامج آخر من خلال شبكة.
في العادة يكون برنامج مثبت على السيرفر و برنامج مثبت عند المستخدم العادي.
الفكرة هنا بناء برامج للمستخدمين تجعلهم قادرين على التواصل مع بعضهم و مشاركة البيانات فيما بينهم.

عندما نقول مشاركة البيانات من خلال شبكة, نقصد بذلك أن الكمبيوتر سيشارك بياناته مع كمبيوتر آخر.
يمكن أن يكون كلا الكمبيوترات موجودين على نفس الشبكة و يمكن أن يكون كل كمبيوتر منهم في بلد مختلف ( لا يهم ).

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


فائدة بناء برامج تتواصل مع بعضها من خلال شبكة

  1. مشاركة البيانات بين مختلف المستخدمين على الشبكة.
  2. تجميع البيانات التي نريد مشاركتها في مكان واحد, الأمر الذي يجعلنا قادرين على التحكم في طريقة مشاركة هذه البيانات.

أفكار لبرامج تعمل على الشبكة

يوجد أفكار كثيرة لبرامج يستخدمها الناس لمشاركة بياناتهم و التي يمكنك بناءها بنفسك أيضاً, أمثلة:

  • برنامج محادثة, مثل MSN, Yahoo, Telegram, Whatsapp.
  • متصفح, حيث يمكنك بناء متصفح مثل Mozilla FireFox, Google Chrome, Internet Explorer, Opera Mini.
  • ألعاب, حيث أنه يمكنك بناء لعبة يستطيع فيها اللاعبين تحدي بعضهم عن بعد.
  • برنامج إختبار, فمثلاً, يمكنك بناء برنامج يجعل الطالب قادراً على إجراء أي إمتحان عن بعد و إرساله إلى مركز المؤسسة التعليمية الرئيسية عند الإنتهاء إلخ..

مصطلحات أساسية في عالم الشبكات

في الجدول التالي وضعنا بعض المصطلحات الأساسية في عالم الشبكات التي سنتطرق إلى بعضها في هذا الدرس.
ملاحظة: في مادة الشبكات سنشرحهم بتفصيل و دقة أكثر.

المصطلح معناه
NIC NIC إختصار لـ Network Interface Card, و معناه كرت الشبكة.
كرت الشبكة هو قطعة إلكترونية يتم تركيبها في أي جهاز إلكتروني حتى يستطيع الإتصال بالشبكات.
MAC Address MAC Address إختصار لـ Media Access Control Address, و هو عبارة عن رقم كرت الشبكة الخاصة بالجهاز.
كل كرت شبكة يملك MAC Address موحد.
الـ MAC Address يتألف من 12 bytes, كل byte فيهم يمكن أن يكون رقم بين 0 و 9, أو حرف بين A و F.

أمثلة
  • 00:1C:B3:09:85:15
  • 00:B0:D0:86:BB:F7
  • 00:1B:44:11:3A:B7
IP Address IP Address إختصار لـ Internet Protocol Address, و هو عبارة عن عنوان مؤقت يتم إعطائه لأي جهاز يريد الإتصال بالشبكة.
كل جهاز يريد الإتصال بالشبكة يتم إعطائه IP Address مختلف.
الـ IP Address يتألف من أربعة أرقام, كل رقم فيهم يمكن أن يكون بين 0 و 255.

أمثلة
  • 80.10.5.104
  • 192.168.0.1
  • 210.14.92.65
Protocol في العربية أيضاً نقول بروتوكول, و هو عبارة عن مجموعة قواعد أساسية يجب إتباعها في كل عملية تواصل.
في عالم الشبكات يوجد بروتوكولات كثيرة, كل واحد منهم مصمم لغرض معين.

أشهر البروتوكولات
  • TCP: يستخدم عند نقل بيانات على الشبكة, يضمن وصولها إلى الجهة المطلوبة كما هي تماماً.
  • UDP: يستخدم عند نقل بيانات على الشبكة, لا يهمه إذا فقد جزء من البيانات التي تم إرسالها.
  • HTTP: يستخدمه المتصفح عندما تقوم بتصفح المواقع.
  • FTP: يستخدم عند تحميل أي نوع من الملفات.
  • Telnet: يستخدم للتحكم في البرامج عن بعد.
  • POP3: يستخدم من قبل العميل لإستقبال الرسائل إلكترونية الواردة في بريده مع إمكانية حذفها.
  • SMTP: يستخدم من قبل العميل لإرسال رسائل إلكترونية إلى السيرفر.
Port Number في العربية نقول رقم البورت.
كل برنامج يرسل أو يستقبل بيانات على الشبكة يحتاج أن يفتح بورت خاص فيه على الجهاز.
رقم البورت يتيح للمستخدم إستخدام أكثر من برنامج يتعاملون مع الشبكة في نفس الوقت.
إذاً رقم البورت يميز البرامج التي تستخدم الشبكة عن بعضها البعض.
URL إختصار لـ Uniform Resource Locator, و يعني كل المعلومات المذكورة في الرابط و التي تشير إلى مصدر محدد للبيانات.

المعلومات الأساسية في أي رابط:   protocol://prefix.domain:port/path/filename
  1. protocol نضع مكانها إسم البروتوكول المستخدم في عملية الإتصال مثل http
  2. prefix نضع مكانها في العادة www
  3. domain نضع مكانها إسم الموقع مثل harmash.com
  4. port نضع مكانها بورت البرنامج أو البروتوكول المستخدم من قبل العميل, فمثلاً الـ http يستخدم البورت 80
  5. path نضع مكانها إسم المجلد الذي نريد الدخول إليه على السيرفر.
  6. filename نضع مكانها إسم الملف الذي نريد تصفحه أو تحميله إلخ..

ملاحظة: عندما تتصفح أي موقع في النت, حتى لو لم ترا جميع المعلومات التي ذكرناها لك عن الـ URL, تأكد أن المتصفح يكتبها عنك.

أمثلة
Socket الـ Socket عبارة عن مجموعة الكلاسات التي يمكن إستخدامها لإنشاء برامج تجعل المستخدمين قادرين على التواصل فيما بينهم بشكل متزامن عبر شبكة النت. و هي تضمن المعلومات الأساسية التي نحتاجها لإجراء أي عملية إتصال: Socket = IP Address + Port Number + Protocol

مثال
في حال أردنا إرسال بيانات على الشبكة إلى شخص محدد, علينا تحديد المعلومات التالية:
  1. البروتوكول الذي سنعتمده عليه لإجراء هذه العملية.
  2. عنوان الشخص الذي سنرسل له البيانات.
  3. رقم بورت البرنامج الذي سنستخدمه لإرسال البيانات.

خلاصة

يمكن الوصول لأي جهاز على الشبكة من خلال الـ IP Address الخاص فيه.
و كل تطبيق يتعامل مع الشبكات سواء لإرسال أو إستقبال بيانات يحتاج إلى رقم بورت خاص فيه ليميزه عن باقي البرامج التي تستخدم الشبكة.

الكلاسات التي نحتاجها للتعامل مع الشبكات في جافا

الكلاس مع تعريفه
public class URL هذا الكلاس مصمم بشكل عام لتجهيز روابط الملفات التي سنتعامل معها عن بعد عبر شبكة الإنترنت.
تابع القراءة »
public class URLConnection هذا الكلاس عبارة عن Abstract Class, و هو يستخدم للقراءة و الكتابة في الملف الذي يشير له كائن الـ URL, بالإضافة إلى أنه يمكننا من معرفة و تحديد كافة المعلومات المتعلقة بإجراء الإتصال مع الملف.
فمثلاً يتيح لنا معرفة آخر مرة تم فيها تحديث الملف, تاريخ صلاحية الملف, إسم الكلاس المناسب لإرسال المعلومات منه و استقبالها فيه إلخ..
تابع القراءة »
public class InetAddress هذا الكلاس مصمم لتحليل عنوان الجهاز أو الموقع الذي نحاول الإتصال به عن بعد عبر شبكة النت.
تابع القراءة »
public class Socket + public class ServerSocket الـ Socket عبارة عن مجموعة من الكلاسات التي يمكن إستخدامها لإنشاء برامج تجعل المستخدمين قادرين على التواصل فيما بينهم بشكل متزامن عبر شبكة النت, لذلك تعتبر أهم كلاسات موجودة في الحزمة java.net و هي تنقسم لقسمين أساسيين:

  • كلاسات مخصصة لبناء برامج تستخدم البروتوكول UDP, مثل الكلاسات DatagramSocket و DatagramPacket.
  • كلاسات مخصصة لبناء برامج تستخدم البروتوكول TCP, مثل الكلاسات Socket و ServerSocket.

هنا قمنا بشرح الكلاسات Socket و ServerSocket.
تابع القراءة »

الدورات

أدوات مساعدة

الأقسام

دورات
مقالات أسئلة مشاريع كتب