برمجة الشبكات بايثون بيثون Python Network Programming

برمجة الشبكات بايثون بيثون Python

  Network Programming

برمجة الشبكات بايثون بيثون Python  Network Programming

يوفر Python مستويين من الوصول إلى خدمات الشبكة.  على مستوى منخفض ، يمكنك الوصول إلى دعم المقبس الأساسي في نظام التشغيل الأساسي ، والذي يسمح لك بنشر العملاء والخوادم لكل من البروتوكولات الموجهة إلى الاتصال وغير المتصلة.

 يحتوي Python أيضًا على مكتبات توفر وصولًا عالي المستوى إلى بروتوكولات شبكة معينة على مستوى التطبيق ، مثل FTP و HTTP وما إلى ذلك.

 يمنحك هذا الفصل فهمًا للمفهوم الأكثر شهرة في برمجة الشبكات.

What is Sockets?ما هى المقابس؟

المقابس هي نقاط النهاية لقناة اتصال ثنائية الاتجاه.  قد تتصل المقابس داخل عملية ما ، أو بين عمليات على نفس الجهاز ، أو بين عمليات في قارات مختلفة.

 قد يتم تطبيق مآخذ التوصيل على عدد من أنواع القنوات المختلفة: مآخذ مجال Unix و TCP و UDP وما إلى ذلك.  توفر مكتبة المقبس فئات محددة للتعامل مع وسائل النقل الشائعة بالإضافة إلى واجهة عامة للتعامل مع الباقي.

 المقابس لها مفردات خاصة بها -

الرقم.الوصف
1
Domain النطاق
مجموعة البروتوكولات المستخدمة كآلية النقل.  هذه القيم هي ثوابت مثل AF_INET و PF_INET و PF_UNIX و PF_X25 وما إلى ذلك.
2
type النوع
نوع الاتصالات بين نقطتي النهاية ، عادةً SOCK_STREAM للبروتوكولات الموجهة للاتصال و SOCK_DGRAM للبروتوكولات غير المتصلة.
3
protocol البرتوكول
عادةً ما تكون صفرية ، يمكن استخدام هذا لتحديد متغير بروتوكول داخل مجال ونوع.
4
hostname اسم المضيف
معرف واجهة الشبكة -

 سلسلة ، يمكن أن تكون اسمًا مضيفًا أو عنوانًا منقطًا رباعيًا أو عنوان IPV6 في علامة النقطتين (وربما نقطية)

 سلسلة "" ، تحدد عنوان INADDR_BROADCAST.

 سلسلة ذات طول صفري تحدد INADDR_ANY أو

 عدد صحيح ، يتم تفسيره كعنوان ثنائي بترتيب بايت المضيف.
5
port المنفذ 
كل قائمة الخادم للعملاء الذين يتصلون على واحد أو أكثر من المنافذ.  قد يكون المنفذ هو رقم منفذ Fixnum أو سلسلة تحتوي على رقم منفذ أو اسم خدمة.

The socket Module برمجة السوكيت −

لإنشاء مأخذ توصيل ، يجب عليك استخدام دالة socket.socket () المتاحة في وحدة المقابس ، والتي تحتوي على بناء الجملة العام
s = socket.socket (socket_family, socket_type, protocol=0)
Here is the description of the parameters − هنا وصف الوسيطات المتغيرة
  • socket_family - هذا إما AF_UNIX أو AF_INET ، كما هو موضح سابقًا.

     socket_type - هذا إما SOCK_STREAM أو SOCK_DGRAM.

     برتوكول - هذا عادة ما يتم استبعاده ، مع التقصير في 0.

     بمجرد الحصول على كائن مأخذ التوصيل ، يمكنك استخدام الوظائف المطلوبة لإنشاء برنامج العميل أو الخادم الخاص بك.  فيما يلي قائمة الوظائف المطلوبة -

Server Socket Methods دوال سيرفر المقابس

الرقم.الدالة والوصف
1
s.bind()
هذه الطريقة تربط العنوان (اسم المضيف ، زوج رقم المنفذ) بالمقبس.
2
s.listen()
تقوم هذه الطريقة بإعداد وتشغيل مستمع TCP.
3
s.accept()
يقبل هذا بشكل سلبي اتصال عميل TCP ، في انتظار حتى وصول الاتصال (حظر).

Client Socket Methods دوال المقابس جهة العنيل

الرقم.الدالة والوصف
1
s.connect()
يبدأ هذا الأسلوب بنشاط اتصال خادم TCP.

General Socket Methods دوال عامة بالسوكيت

الرقم.الدالة والوصف
1
s.recv()
هذه الطريقة تستقبل رسالة TCP
2
s.send()
هذه الطريقة تنقل رسالة TCP
3
s.recvfrom()
هذه الطريقة تستقبل رسالة UDP
4
s.sendto()
هذه الطريقة تنقل رسالة UDP
5
s.close()
هذه الطريقة تغلق المقبس
6
socket.gethostname()
إرجاع اسم المضيف.

A Simple Server سيرفر بسبط

لكتابة خوادم الإنترنت ، نستخدم وظيفة المقبس المتاحة في وحدة المقابس لإنشاء كائن مأخذ توصيل.  ثم يتم استخدام كائن مأخذ التوصيل لاستدعاء وظائف أخرى لإعداد خادم مأخذ توصيل.

 اتصل الآن بوظيفة الربط (اسم المضيف ، المنفذ) لتحديد منفذ لخدمتك على المضيف المحدد.

 بعد ذلك ، استدعاء الأسلوب المقبول للكائن المرتجع.  تنتظر هذه الطريقة حتى يتصل العميل بالمنفذ الذي حددته ، ثم يُرجع كائن اتصال يمثل الاتصال بهذا العميل.
#!/usr/bin/python           # This is server.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.
s.bind((host, port))        # Bind to the port

s.listen(5)                 # Now wait for client connection.
while True:
   c, addr = s.accept()     # Establish connection with client.
   print 'Got connection from', addr
   c.send('Thank you for connecting')
   c.close()                # Close the connection

A Simple Client مثال للعميل سوكيت

دعنا نكتب برنامج عميل بسيط للغاية يفتح اتصال بمنفذ معين 12345 ومضيف معين.  هذا بسيط جدًا لإنشاء عميل مأخذ باستخدام وظيفة وحدة مأخذ Python.

 يفتح socket.connect (hosname ، منفذ) اتصال TCP إلى اسم مضيف على المنفذ.  بمجرد فتح مأخذ توصيل ، يمكنك القراءة منه مثل أي كائن إدخال / إخراج.  عند الانتهاء من ذلك ، تذكر إغلاقه ، حيث ستغلق ملفًا.

 التعليمة البرمجية التالية هي عميل بسيط للغاية يتصل بمضيف ومنفذ معين ، ويقرأ أي بيانات متاحة من المقبس ، ثم يخرج -
#!/usr/bin/python           # This is client.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.

s.connect((host, port))
print s.recv(1024)
s.close()                     # Close the socket when done

الآن قم بتشغيل هذا server.py في الخلفية ثم قم بتشغيل أعلاه client.py لرؤية النتيجة.
# Following would start a server in background.
$ python server.py & 

# Once server is started run client as follows:
$ python client.py
This would produce following result −
هذا من شأنه أن ينتج النتيجة التالية -
Got connection from ('127.0.0.1', 48437)
Thank you for connecting

بيثون وحدات الإنترنت Python Internet modules

قائمة ببعض الوحدات المهمة في بيثون نتورك / برمجة الإنترنت.
البرتوكول الوظيفة رقم المنفذ مكتبة بايثون 
HTTPصفحات الويب80httplib, urllib, xmlrpclib
NNTPأخبار يوزنت119nntplib
FTPنقل الملفات20ftplib, urllib
SMTPإرسال البريد25smtplib
POP3إحضار البريد110poplib
IMAP4إحضار البريد143imaplib
Telnetالأمر 23telnetlib
Gopherنقل المستندات70gopherlib, urllib

يرجى التحقق من جميع المكتبات المذكورة أعلاه للعمل مع بروتوكولات FTP و SMTP و POP و IMAP.