حديثنا اليوم راح يكون عن كيف تسوي محادثة بسيطة باستخدام Python (Socket Programming مبسط) وراح نشرح لماذا أخترنا Python
المقدمة
أصبحت تطبيقات المحادثة جزءًا أساسيًا من حياتنا اليومية، فنحن نستخدمها في كل وقت تقريبًا سواء للدردشة مع الأصدقاء أو لمتابعة العمل أو حتى للدراسة. تطبيقات مثل واتساب، تليجرام، ماسنجر، زووم وغيرها تعمل على تقنيات معقدة جدًا في الخلفية.
لكن وراء هذه التطبيقات الضخمة توجد مفاهيم بسيطة يمكن لأي مبرمج مبتدئ أن يتعلمها. واحدة من أهم هذه المفاهيم هي Socket Programming، أي برمجة المقابس التي تسمح لأجهزة الكمبيوتر بالتحدث مع بعضها عبر الشبكة.
في هذا المقال سنتعلم خطوة بخطوة كيف نبني تطبيق محادثة بسيط باستخدام Python. سيكون التطبيق نصيًا عبر سطر الأوامر (Command Line)، لكنه يضع الأساس لفهم كيف تعمل تطبيقات الدردشة الحديثة. والأهم من ذلك أن هذا المشروع مناسب جدًا للمبتدئين، حيث يجمع بين مفاهيم الشبكات والبرمجة بشكل ممتع وسهل.
ما هو Socket Programming؟
الفكرة المبسطة
-
Socket (المقبس): نقطة تواصل بين جهازين.
-
Server (الخادم): الجهاز الذي يستقبل الاتصالات وينظمها.
-
Client (العميل): الجهاز الذي يتصل بالخادم ليرسل ويستقبل البيانات.
-
Port (المنفذ): الباب الذي يعبر منه الاتصال.
مثال حياتي مبسط
تخيل أنك تدير مقهى صغير:
-
المقهى هو الخادم.
-
الزبائن هم العملاء.
-
الطاولات مرقمة (مثل المنافذ) وكل زبون يجلس على طاولة محددة.
-
عند طلب القهوة، الزبون يتواصل معك عبر الطاولة، وأنت كصاحب المقهى تنقل الطلب للمطبخ ثم تعيد النتيجة.
بنفس الطريقة، يعمل Socket Programming كوسيط بين عدة أجهزة.
لماذا اخترنا Python؟
-
سهولة الفهم: لغة بايثون مشهورة ببساطتها، مما يجعلها مثالية للمبتدئين.
-
المكتبات المدمجة: مكتبة
socketتأتي مع بايثون بشكل افتراضي. -
الدعم المجتمعي: ملايين المقالات والشروحات موجودة لمساعدة المبرمجين.
-
المرونة: يمكن تطوير المشروع من تطبيق نصي صغير إلى تطبيق رسومي متكامل.
المتطلبات
-
Python 3.x مثبت على جهازك.
-
محرر نصوص مثل VS Code.
-
جهاز واحد يكفي للتجربة (يمكن فتح عدة نوافذ Terminal لمحاكاة أكثر من عميل).
🟡 الجزء الأول: كود الخادم (Server)
الخادم هو قلب النظام، يستقبل اتصالات العملاء ويمرر الرسائل بينهم.
🟡 الجزء الثاني: كود العميل (Client)
العميل هو من يكتب الرسائل ويرسلها للخادم، ويستقبل بدوره رسائل الآخرين.
الكود جاهز للنسخ :
import socket
import threading
def receive_messages(sock):
while True:
try:
message = sock.recv(1024).decode("utf-8")
print("\nرسالة جديدة: " + message)
except:
print("تم قطع الاتصال بالخادم")
sock.close()
break
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(("localhost", 12345))
thread = threading.Thread(target=receive_messages, args=(client_socket,))
thread.start()
while True:
message = input("اكتب رسالتك: ")
client_socket.send(message.encode("utf-8"))
🟡 تجربة التطبيق
لتجربة المشروع:
-
افتح نافذة Terminal الأولى وشغل الخادم:
🟡 تحليل الكود
-
bind()لربط العنوان والمنفذ. -
listen()لجعل الخادم ينتظر الاتصالات. -
accept()لقبول اتصال عميل جديد. -
send()وrecv()لنقل البيانات. -
threadingيسمح بالتعامل مع عدة عملاء في وقت واحد.
🟡 مميزات المشروع
-
بسيط وسهل الفهم.
-
يوضح كيف تعمل المحادثات.
-
قابل للتطوير إلى مشروع أكبر.
🟡 أفكار للتطوير
-
إضافة أسماء للمستخدمين بدلاً من الـ IP.
-
تطوير واجهة رسومية باستخدام Tkinter.
-
تخزين المحادثات في قاعدة بيانات.
-
إضافة ميزة التشفير لحماية الخصوصية.
-
تشغيل الخادم على الإنترنت ليتمكن أشخاص من دول أخرى من المشاركة.
🟡 TCP أم UDP؟
-
TCP: يضمن وصول الرسائل بالترتيب. مناسب لتطبيقات المحادثة.
-
UDP: أسرع لكنه لا يضمن وصول كل رسالة. مناسب للألعاب والبث المباشر.
لذلك اخترنا TCP في مشروعنا.
الخاتمة
مشروعنا اليوم أعطاك لمحة عملية عن كيفية بناء تطبيق محادثة باستخدام Python و Socket Programming.
صحيح أن التطبيق نصي وبسيط، لكنه الأساس لفهم العالم الكبير وراء تطبيقات الدردشة.
ابدأ بهذا المشروع، ثم طوّره خطوة بخطوة، وستجد نفسك قادرًا على بناء تطبيقات معقدة ومفيدة. 🚀

.png)


.png)
تعليقات
إرسال تعليق