شنبه ۲۹ دي ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش پایتون - برنامه‌نویسی شبکه

Python دو سطح دسترسی به خدمات شبکه را فراهم می‌کند. در سطح پایین، می‌توانید به پشتیبانی سوکت پایه در سیستم عامل زیرین دسترسی داشته باشید که به شما امکان می‌دهد برای هر دو پروتکل اتصال‌گرا و بدون اتصال، کلاینت و سرور پیاده‌سازی کنید.

Python همچنین کتابخانه‌هایی دارد که دسترسی سطح بالاتری به پروتکل‌های شبکه سطح برنامه کاربردی خاص، مانند FTP، HTTP و غیره را فراهم می‌کند.

این فصل به شما درک مفهوم معروف در شبکه - برنامه‌نویسی سوکت را می‌دهد.

سوکت چیست؟

سوکت‌ها انتهای یک کانال ارتباطی دوطرفه هستند. سوکت‌ها می‌توانند در یک فرآیند، بین فرآیند‌های یکسان یا بین فرآیند‌های قاره‌های مختلف ارتباط برقرار کنند.

سوکت‌ها می‌توانند بر روی تعداد مختلفی از کانال‌های مختلف پیاده‌سازی شوند: سوکت‌های حوزه یونیکس، TCP، UDP و غیره. کتابخانه socket کلاس‌های خاصی را برای مدیریت حمل و نقل‌های رایج و همچنین یک رابط عمومی برای مدیریت بقیه فراهم می‌کند.

سوکت‌ها واژگان خاص خود را دارند:

ردیف اصطلاح و توضیح
1 حوزه خانواده پروتکل‌هایی که به عنوان مکانیزم حمل و نقل استفاده می‌شود. این مقادیر ثابت‌هایی مانند AF_INET، PF_INET، PF_UNIX، PF_X25 و غیره هستند.
2 نوع نوع ارتباطات بین دو انتهای، معمولاً SOCK_STREAM برای پروتکل‌های اتصال‌گرا و SOCK_DGRAM برای پروتکل‌های بدون اتصال است.
3 پروتکل معمولاً صفر، این ممکن است برای شناسایی یک نوع پروتکل در یک حوزه و نوع استفاده شود.
4 نام میزبان شناسه یک رابط شبکه:
- یک رشته، که می‌تواند یک نام میزبان، یک آدرس نقطه‌ای-چهار یا یک آدرس IPV6 در نگارش دو نقطه‌ای (و ممکن است نقطه) باشد
- یک رشته "<broadcast>"، که یک آدرس INADDR_BROADCAST را مشخص می‌کند.
- یک رشته با طول صفر، که INADDR_ANY را مشخص می‌کند، یا
- یک عدد صحیح، که به عنوان یک آدرس دودویی در نظم بایت میزبان تفسیر می‌شود.

ماژول socket

برای ایجاد یک سوکت، باید از تابع socket.socket() موجود در ماژول socket استفاده کنید، که دارای سینتکس عمومی زیر است:

s = socket.socket (socket_family, socket_type, protocol=0)

برنامه‌نویسی شبکه در پایتون


 

پایتون دو سطح دسترسی به خدمات شبکه را فراهم می‌کند. در سطح پایین، می‌توانید به پشتیبانی سوکت پایه در سیستم عامل زیرین دسترسی داشته باشید که به شما امکان می‌دهد برای هر دو پروتکل اتصال‌گرا و بدون اتصال، کلاینت و سرور پیاده‌سازی کنید.

پایتون همچنین کتابخانه‌هایی دارد که دسترسی سطح بالاتری به پروتکل‌های شبکه سطح برنامه کاربردی خاص، مانند FTP، HTTP و غیره را فراهم می‌کند.

این فصل به شما درک مفهوم معروف در شبکه - برنامه‌نویسی سوکت را می‌دهد.

سوکت چیست؟

سوکت‌ها انتهای یک کانال ارتباطی دوطرفه هستند. سوکت‌ها می‌توانند در یک فرآیند، بین فرآیند‌های یکسان یا بین فرآیند‌های قاره‌های مختلف ارتباط برقرار کنند.

سوکت‌ها می‌توانند بر روی تعداد مختلفی از کانال‌های مختلف پیاده‌سازی شوند: سوکت‌های حوزه یونیکس، TCP، UDP و غیره. کتابخانه socket کلاس‌های خاصی را برای مدیریت حمل و نقل‌های رایج و همچنین یک رابط عمومی برای مدیریت بقیه فراهم می‌کند.

سوکت‌ها واژگان خاص خود را دارند:

ردیف اصطلاح و توضیح
1 حوزه خانواده پروتکل‌هایی که به عنوان مکانیزم حمل و نقل استفاده می‌شود. این مقادیر ثابت‌هایی مانند AF_UNIX یا AF_INET، PF_INET، PF_UNIX، PF_X25 و غیره هستند.
2 نوع نوع ارتباطات بین دو انتهای، معمولاً SOCK_STREAM برای پروتکل‌های اتصال‌گرا و SOCK_DGRAM برای پروتکل‌های بدون اتصال است.
3 پروتکل معمولاً صفر، این ممکن است برای شناسایی یک نوع پروتکل در یک حوزه و نوع استفاده شود.
4 نام میزبان شناسه یک رابط شبکه:
- یک رشته، که می‌تواند یک نام میزبان، یک آدرس نقطه‌ای-چهار یا یک آدرس IPV6 در نگارش دو نقطه‌ای (و ممکن است نقطه) باشد
- یک رشته "<broadcast>"، که یک آدرس INADDR_BROADCAST را مشخص می‌کند.
- یک رشته با طول صفر، که INADDR_ANY را مشخص می‌کند، یا
- یک عدد صحیح، که به عنوان یک آدرس دودویی در نظم بایت میزبان تفسیر می‌شود.

ماژول socket

برای ایجاد یک سوکت، باید از تابع socket.socket() موجود در ماژول socket استفاده کنید، که دارای سینتکس عمومی زیر است:

```python socket.socket(socket_family, socket_type, protocol)

پارامترهای این تابع عبارتند از:

* **socket_family** : خانواده پروتکل. این می‌تواند AF_UNIX یا AF_INET باشد. * **socket_type** : نوع سوکت. این می‌تواند SOCK_STREAM یا SOCK_DGRAM

#!/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

یک کلاینت ساده

بیایید یک برنامه کلاینت بسیار ساده بنویسیم که به یک پورت 12345 و میزبان داده شده، اتصال برقرار می‌کند. این بسیار ساده است که یک کلاینت سوکت را با استفاده از تابع ماژول socket پایتون ایجاد کنیم.

تابع socket.connect(hostname, port) یک اتصال TCP به hostname در port باز می‌کند. هنگامی که یک سوکت باز دارید، می‌توانید از آن مانند هر شیء IO بخوانید. هنگامی که کارتان تمام شد، به یاد داشته باشید که آن را ببندید، همانطور که یک فایل را می‌بندید.

کد زیر یک کلاینت بسیار ساده است که به یک میزبان و پورت داده شده متصل می‌شود، هر داده موجود را از سوکت می‌خواند و سپس خارج می‌شود:

```python import socket host = "localhost" port = 12345 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((host, port)) data = s.recv(1024) print(data) s.close()

#!/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 را برای مشاهده نتیجه اجرا کنید.


**English equivalents of specialized Python words:**

* server = سرور
* client = کلاینت
* background = پس‌زمینه
* result = نتیجه
# Following would start a server in background.
$ python server.py & 

# Once server is started run client as follows:
$ python client.py

این نتیجه زیر را تولید می‌کند:

Got connection from ('127.0.0.1', 48437)
Thank you for connecting

ماژول‌های اینترنت پایتون

فهرستی از برخی از ماژول‌های مهم در برنامه‌نویسی شبکه/اینترنت پایتون.

پروتکل عملکرد رایج پورت شماره ماژول پایتون
HTTP صفحات وب 80 httplib, urllib, xmlrpclib
NNTP اخبار Usenet 119 nntplib
FTP انتقال فایل 20 ftplib, urllib
SMTP ارسال ایمیل 25 smtplib
POP3 دریافت ایمیل 110 poplib
IMAP4 دریافت ایمیل 143 imaplib
Telnet خطوط فرمان 23 telnetlib
Gopher انتقال اسناد 70 gopherlib, urllib

لطفاً همه کتابخانه‌های ذکر شده در بالا را برای کار با پروتکل‌های FTP، SMTP، POP و IMAP بررسی کنید.