# Multi-Client Chat Room – Python
## نبذة عن المشروع
قمت بتطوير **Multi-Client Chat Room** باستخدام Python، وهو تطبيق محادثة يعتمد على **Client-Server Architecture** ويسمح لعدة مستخدمين بالاتصال بسيرفر واحد وإرسال واستقبال الرسائل بشكل لحظي.
تم بناء المشروع باستخدام **Socket Programming** لإنشاء اتصال TCP بين الـ Client والـ Server، مع استخدام **Multithreading** للتعامل مع عدة مستخدمين في نفس الوقت.
## أهم مميزات المشروع
* إنشاء اتصال بين الـ Client والـ Server باستخدام TCP.
* دعم اتصال أكثر من مستخدم بنفس الـ Chat Room.
* اختيار Nickname لكل مستخدم.
* إرسال واستقبال الرسائل في الوقت الفعلي.
* إرسال الرسائل لجميع المستخدمين المتصلين باستخدام Broadcasting.
* إشعار المستخدمين عند دخول مستخدم جديد إلى الـ Chat Room.
* إشعار المستخدمين عند مغادرة أحد المستخدمين.
* استخدام Threads للتعامل مع عدة Clients بشكل متزامن.
* التعامل مع انقطاع اتصال المستخدم وإزالته من قائمة المستخدمين المتصلين.
## التقنيات المستخدمة
* **Python**
* **Socket Programming**
* **TCP/IP**
* **Client-Server Architecture**
* **Multithreading**
* **Network Communication**
## هيكل المشروع
### `server.py`
مسؤول عن تشغيل الـ Chat Server واستقبال اتصالات المستخدمين، وإدارة قائمة الـ Clients والـ Nicknames، بالإضافة إلى استقبال الرسائل وإرسالها لباقي المستخدمين.
### `client.py`
مسؤول عن اتصال المستخدم بالسيرفر، واختيار الـ Nickname، وإرسال واستقبال الرسائل.
## آلية عمل المشروع
1. يتم تشغيل الـ Server وانتظاره لاتصالات المستخدمين.
2. يقوم الـ Client بالاتصال بالسير