تفاصيل العمل

هذا المشروع عبارة عن تطبيق شبكة باستخدام بروتوكول TCP، ويتكون من خادم (Server) وعميل (Client). الفكرة الأساسية هي إنشاء اتصال بين العميل والخادم لتبادل الرسائل النصية فيما بينهما. يمكن للعميل إرسال رسائل إلى الخادم والعكس صحيح، حيث يتبادلان البيانات بشكل دوري عبر الاتصال.

تفاصيل المشروع:

1. الخادم (Server):

يقوم الخادم بإنشاء Socket باستخدام socket(AF_INET, SOCK_STREAM)، وهو المسؤول عن استقبال اتصالات العملاء.

يقوم بربط (bind) الـ Socket بعنوان IP المحلي 127.0.0.1 والمنفذ 7500.

ينتظر الخادم الاتصالات عبر استدعاء دالة listen، ثم يقبل أول عميل يتصل به باستخدام accept()، مما يتيح بدء المحادثة.

يدخل الخادم في حلقة while حيث:

يستقبل الرسائل من العميل باستخدام recv(2048).

يطبع الرسالة التي أرسلها العميل.

يطلب من المستخدم (الخادم) إدخال رسالة ليرسلها إلى العميل.

يقوم بإرسال الرسالة إلى العميل باستخدام send().

البرنامج يتوقف في حال حدوث خطأ أو ضغط المستخدم على Ctrl+C (لتنفيذ KeyboardInterrupt).

2. العميل (Client):

يقوم العميل بإنشاء Socket مشابه للخادم باستخدام socket(AF_INET, SOCK_STREAM) للاتصال بالخادم.

يتصل العميل بالخادم عبر العنوان المحلي 127.0.0.1 والمنفذ 7500 باستخدام connect().

بعد الاتصال، يدخل العميل في حلقة while حيث:

يطلب من المستخدم إدخال رسالة لإرسالها إلى الخادم.

يقوم بإرسال الرسالة إلى الخادم باستخدام send().

ينتظر العميل رد الخادم باستخدام recv(2048).

يطبع الرسالة المستلمة من الخادم على الشاشة.

البرنامج يتوقف عند إغلاق الاتصال بعد انتهاء المحادثة.

الشرح المفصل للأكواد:

الخادم:

يتم إنشاء الـ Socket مع تفعيل الخيار SO_REUSEADDR للسماح بإعادة استخدام عنوان IP والمنفذ إذا تم إغلاقه بشكل غير صحيح.

باستخدام bind()، يتم تحديد عنوان الـ IP والمنفذ الذي سيعمل عليه الخادم.

بعد ذلك، يتم الانتظار حتى يتصل عميل بالخادم عبر accept()، ومن ثم يمكن بدء تبادل الرسائل.

بمجرد الاتصال، تبدأ عملية الاستقبال والإرسال بين الخادم والعميل في حلقة دائمة.

العميل:

يقوم العميل بإنشاء Socket مشابه، لكنه يتصل بالخادم عبر connect().

يتم إرسال الرسائل إلى الخادم واستقبال الردود منه بنفس الطريقة التي يعمل بها الخادم.

كيفية تشغيل البرنامج:

أولاً، قم بتشغيل الخادم من خلال تشغيل الكود الخاص به. سيظهر لك رسالة "Waiting for connection..." تشير إلى أن الخادم ينتظر اتصالاً.

ثم قم بتشغيل العميل. بمجرد تشغيل العميل، ستظهر رسالة تشير إلى أن الاتصال تم بنجاح بين العميل والخادم.

يبدأ تبادل الرسائل بين العميل والخادم، حيث يمكن لكل منهما إرسال واستقبال الرسائل بالتناوب.

تقنيات المستخدم:

لغة البرمجة: بايثون

المكتبة المستخدمة: socket (لتنفيذ الشبكات عبر TCP)

النتيجة النهائية:

هذا التطبيق يسمح بمحادثة نصية مباشرة بين الخادم و العميل عبر الشبكة المحلية باستخدام بروتوكول TCP.

بطاقة العمل

اسم المستقل Yousef E.
عدد الإعجابات 0
عدد المشاهدات 1
تاريخ الإضافة
تاريخ الإنجاز