recent
أخبار ساخنة

مفهوم مكتبة socket الخاصة بالشبكات في لغة بايثون

الصفحة الرئيسية
مفهوم مكتبة socket بايثون

أساسيات مكتبة socket في لغة بايثون

مكتبة socket سوكيت في لغة البايثون, سوف نشرح اليوم عن مكتبة مهمة في لغة بايثون و هي مكتبة socket الخاصة في التعامل مع الشبكات.

يجب أن يكون لك خبرة في أساسيات لغة بايثون قبل الشروع و إكمال هذا الدرس, يمكن العودة للدروس السابقة و تعلم أساسيات لغة بايثون.


تحميل مكتبة socket على ويندوز

لتحميل المكتبة على نظام windwos نقوم بفتح موجه الأوامر cmd.

فتح cmd في الويندوز

 

ثم تقوم بكتابة الأمر pip install sockets ليتم البدء بتحميل المكتبة لدينا عند الإنتهاء.

الأمر الذي يتم به تثبيت مكتبة socket

بنفس المبدأ يتم تحميلها على نظام لينكس بكتابة الأمر نفسه في تيرمنال و ننتظر انتهاء التحميل.


مفهوم مصطلح الـ Socket

هذا المصطلح في اللغة العربية يعني مقبس يقوم بالربط بين شيئين بشكل عام, و لكي نفهم هذه النقطة بشكل صحيح.

"تخيل معي بأن لمبة كهرباء في غرفة و تكون مكونة من سلك كهربائي منسدل من سقف هذه الغرفة و متصل في هذه اللمبة و يتوسط بينهم قطعة تسمى 'سوكة' و هي التي تربط بين السلك و اللمبة لكي تمد هذه اللمبة بالتيار الكهربائي لكي تضيئ". هذه السوكة نعتبرها مكتبة socket.

أما الـ socket برمجياً في موضوعنا في هذا الدرس سيكون لربط برنامجين مختلفين بإتصال مباشر لنقل و إرسال البيانات.

الـ server نقصد به الخادم الرئيسي الذي يستقبل العملاء Clients و يصدر لهم الأوامر لكي يقوموا بتنفيذها, يجب أن لا نخلط بين مصطلحي السيرفر و الباتش.

الـ Client نقصد به العميل المستقبل الذي يقوم بالإتصال في السيرفر و يستقبل منه الأوامر و يقوم بتنفيذها.

مكتبة socket في الشبكات

 

إستدعاء مكتبة socket

نقوم بإستدعائها ببداية البرنامج بالأمر import socket ثم يكون بعض الميثود موجودة و هي :

الـ address family : طريقة كتابة العناوين الخاصة في البرنامج, و اكثر الطرق المستخدمة في هذا هو الـ AF_INET و يعني العنوان الخاص في البروتوكول بإصداره الرابع Ipv4 و الـ AF_INET6 العنوان الخاص في البروتوكول الإصدار السادس Ipv6.


بروتوكولات الشبكات Protocol

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

و هنا بعض الأمور التي تتعلق بالبروتوكولات و هي :

  1. إختلاف الكثير منها في عملها ووظيفتها.
  2. من الممكن أن تعمل عدة بروتوكولات معاً لتنفيذ عمل ما.
  3. لكل بروتوكول مزايا و عيوب.

و البروتوكولات الأكثر إستخداماً على الشبكة العنكبوتية هي Tcp و UDP.


مميزات و عيوب البروتوكولات

سوف نتحدث هنا عن البروتوكولين الأكثر إستخداماً و عن مزاياها و عيوبها.


بروتوكول TCP مميزات SOCK_STREAM

إن بروتوكول TCP هو بروتوكول مبني على الإتصال connection-based و يوفر آلية لتصحيح الأخطاء و ضمانة لتسليم البيانات عبر ما يعرف بالتحكم في الجريان flow control و يحدد التحكم في الجريان, متى يجب إيقاف نقل البيانات و إعادة إرسال الرزم التي أرسلت سابقاً و التي واجهت مشاكل كالتصادمات collisions إذا أن التأكيد على الوصول الدقيق و الكامل للبيانات عبر بروتوكول TCP هو أمر جوهري في عملية تبادل البيانات المهمة كالتحويلات في قواعد البيانات.


بروتوكول UDP مميزات SOCK_DGRAM

بروتوكول UDP هو إختصار للمصطلح User Datagram Protocol على الجهة الأخرى هو بروتوكول عديم الإتصال connectionless الذي نادراً ما يتعامل مع عمليات نقل البيانات المهمة لأنه يفتقر إلى التحكم في جريان البيانات أو أية طريقة اخرى للتأكد من توصيل البيانات عملياً, لكن بروتوكول UDP يستخدم إستخداماً شائعاً في التطبيقات, كتدفق streaming الصوت و الصورة و مستخدماً بكثرة في messenger و Skype و Whatsapp و غيرها..., لتحسين جودة الصوت و المكالمة حيث أنه اسرع بكثير من TCP لأنه لا يحتوي على آلية لتصحيح الأخطاء و التحكم في الجريان و في الأماكن التي لا يهم فيها فقدان الرزم الشبكية كثيراً.

لتحميل كتاب pdf بروتوكولات الانترنت و مبدأ عملها اضغط على زر التحميل الآتي

إضغط لتحميل كتاب بروتوكولات الأنترنت


دوال مكتبة socket

1- دالة socket هي دالة تقوم بإنشاء سوكيت لكي تقوم بتأسيس الإتصال عن طريقه.

>>>import socket
>>>s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)

2-دالة bind تستخدم هذه الدالة لربط السوكت مع عنوان و بورت.

>>> import socket
>>> s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
>>> host = '127.0.0.1'
>>> port = 4444
>>> s.bind((host,port))

3-دالة listen تسمح لنا بالبدء بالتنصت على عنوان و بورت معين لكي نستقبل الإتصالات الواردة عليه فيما بعد.

>>> import socket
>>> s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
>>> host = '127.0.0.1'
>>> port = 4444
>>> s.bind((host,port))
>>> s.listen(5)

4-دالة accept هي دالة نستخدمها لإستقبال الإتصالات الواردة لدينا بعدما نكون قد اجهزنا عملية التنصت على البورت.

>>> import socket
>>> s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
>>> host = '127.0.0.1'
>>> port = 4444
>>> s.bind((host,port))
>>> s.listen(5)
>>> con,adr = s.accept()

 5-دالة connect هي دالة نستخدمها للإتصال المباشر بعنوان آيبي معين.

6-دالة gethostname هي دالة ترجع لنا بستركتر (هيكل) يحوي معلومات شبيهة بالدالة السابقة لكن هذه سوف نستخدمها عندما نحاول الإتصال بهوست و ليس آيبي مثل google.com.

>>>import socket
>>>socket.gethostname()
'DESKTOP-GTB7OI4'

7- دالة recv هي دالة نستخدمها لإستقبال الحزم البيانية Packets.

>>>import socket
>>>sock.send(1024)

8-دالة send هي دالة نستخدمها لإرسال الحزم البيانية Packets.

>>>import socket
>>>sock.send(b'welcome')

9-دالة closesocket هي دالة نستخدمها لإغلاق السوكت عند الإنتهاء منه.

>>>import socket
>>>sock.closesocket()

10-دالة gethostbyname هي دالة تستخدم للحصول على آيبي النطاق.

>>>import socket
>>>Domain = "google.com"
>>>ip_web = socket.gethostbyname(Domain)
>>>print(ip_web)

11- دالة gethostname هي دالة تستخدم لمعرفة آيبي الجهاز على الشبكة.

>>>import socket
>>>socket.gethostname()

12- دالة settimeout هي دالة الإنتظار حسب الثواني المطلوبة.

>>>import socket
>>>s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
>>>s.settimeout(30)

لتحميل هذا الدرس على شكل كتاب PDF إضغط هنا أو على زر التحميل الآتي

google-playkhamsatmostaqltradent