عمل socket و getsockopt و setsockopt في python
تعد مكتبة السوكت واحده من المكتبات الشهيرة في لغة بايثون والتي يستخدمها الاغلب منا في عمل port و host ومعرفة اسم الهوت والبورت الخاصين بالجهاز وكل هذا يحدث من خلال هذة المكتبة الاكثر من رائعه وفي هذا المقال سوف نتناول معكم واحد من اهم استخدامات المكتبة وهو كيفية عمل socket port وكيفية التعديل عليه , حيث انه من خلال هذا السوكت يمكن ان تبني الشبكه وتجعل اي جهاز اخر يدخل عليها ويكون بمثابة السيرفر بالنسبة لك .
تقوم الدالة socket () بإرجاع كائن مأخذ توصيل تقوم بتنفيذ استدعاءات نظام مأخذ التوصيل المختلفة. حيث واجهة Python هي عبارة عن تحويل صوتي بسيط لاستدعاء نظام Unix وواجهة المكتبة للمآخذ إلى نمط Python object-oriented : تقوم وظيفة socket () بإرجاع كائن مأخذ تقوم طرقه بتنفيذ استدعاءات نظام المقابس المختلفة. أنواع المعلمات أعلى قليلاً من مستوى واجهة C: تخصيص المخزن المؤقت في عمليات الاستلام تلقائي ، وطول المخزن المؤقت ضمني في إجراءات الإرسال ، تمامًا مثل عمليات القراءة () والكتابة () على ملفات Python.
الفرق بين ipv4 و ipv6
اول يستخدم الامر AF_INET بمثابة الامر ipv4 ولكن يمكنك عمل AF_INET6 ليكون بمثابة ipv6 وهذة الاوامر من داخل مكتبة socket تحديدا من دالة socket وهذة اول خطوة للبناء الاخرى وهيا تحديد النوع سواء tcp ام udp والامر SOCK_STREAM يعني TCP والاخر وهو SOCK_DGRAM يعني udp والفرق بينهم ان الtcp يمكن عمله للبث المباشر وهي يهتم بالسرعه وليس جوده وصول المعلومه عكس الudp والذي يهتم جدا بجودة وصول الملفات ولا يهتم بالسرعه بشكل كبير مثل اذا كنت تريد ارسال ملف الى شخص فهذا المثال تطبيق على خاصية udp .
والان قم بعمل send و recv للبيانات وشاهد النتيجة , ويمكنك ايضا وضع قيمة مينه اثناء الارسال وذلك يكون من خلال استخدام الامر setsockopt وهو ياخذ 3 عناصر الاول وهو ipv4 ام 6 والثاني وهو النوع سواء tcp ام udp والاخير وهو البورت يمكنك تطبيق الاكواد التاليه على اي محرر لكتابة الاكواد بايثون وشاهد النتيجة .
from socket import *
doc = socket(AF_INET , SOCK_STREAM)
send_ = doc.getsockopt(SOL_SOCKET , SO_SNDBUF)
recv_ = doc.getsockopt(SOL_SOCKET , SO_RCVBUF)
print(send_ , recv_)
doc.setsockopt(SOL_SOCKET , SO_SNDBUF , 4040)
doc.setsockopt(SOL_SOCKET , SO_RCVBUF , 4040)
send_ = doc.getsockopt(SOL_SOCKET , SO_SNDBUF)
recv_ = doc.getsockopt(SOL_SOCKET , SO_RCVBUF)
print(send_ , recv_)
الى هنا يكون انتهى ثاني درس لنا من دروس تعلم socket في لغة بايثون ونأمل ان نراكم قريبا في دروس مقبله , ولمزيد من الدروس المختصه بلغة البايثون يمكنكم مشاهدة المقالات السابقة .