آموزش برنامه نویسی شبکه در برنامه نویسی پایتون ۳

3 سال پیش

 آموزش برنامه نویسی شبکه در برنامه نویسی پایتون ۳

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش برنامه نویسی شبکه در برنامه نویسی پایتون ۳ خواهیم پرداخت.

پیشنهاد ویژه : پکیج آموزش پایتون مختص بازار کار

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

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

این درس به شما درکی در مورد معروف ترین مفهوم در شبکه – برنامه نویسی سوکت می دهد.

سوکت چیست؟

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

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

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

Sr.No. Term & Description
۱ domain

خانواده پروتکل هایی که به عنوان مکانیسم انتقال استفاده می شود. این مقادیر ثابت هایی مانند AF_INET، PF_INET، PF_UNIX، PF_X25 و غیره هستند.

۲ type

نوع ارتباطات بین دو نقطه پایانی، معمولاً SOCK_STREAM برای پروتکل های اتصال گرا و SOCK_DGRAM برای پروتکل های بدون اتصال.

۳ protocol

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

۴ hostname

شناسه یک رابط شبکه –

  • رشته‌ای که می‌تواند نام میزبان، آدرس چهار نقطه‌ای یا آدرس IPV6 در علامت دو نقطه (و احتمالاً نقطه) باشد.
  • یک رشته “<broadcast>”، که یک آدرس INADDR_BROADCAST را مشخص می کند.
  • رشته ای با طول صفر که INADDR_ANY یا را مشخص می کند
  • یک عدد صحیح که به عنوان یک آدرس باینری به ترتیب بایت میزبان تفسیر می شود.
۵ port

هر سرور به مشتریانی که با یک یا چند پورت تماس می گیرند گوش می دهد. یک پورت ممکن است یک شماره پورت Fixnum، رشته ای حاوی شماره پورت یا نام یک سرویس باشد.

 

 

ماژول سوکت

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

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

 

در اینجا توضیحات پارامترها آمده است

  • socket_family – همانطور که قبلا توضیح داده شد، این AF_UNIX یا AF_INET است.
  • socket_type – این SOCK_STREAM یا SOCK_DGRAM است.
  • پروتکل – این معمولاً کنار گذاشته می‌شود و پیش‌فرض ۰ است.

هنگامی که شی سوکت دارید، می توانید از توابع مورد نیاز برای ایجاد برنامه مشتری یا سرور خود استفاده کنید. در زیر لیستی از توابع مورد نیاز آمده است

روش های سوکت سرور

Sr.No. Method & Description
۱ ()s.bind

این روش آدرس (نام میزبان، جفت شماره پورت) را به سوکت متصل می کند.

۲ ()s.listen

این روش شنونده TCP را تنظیم و راه اندازی می کند.

۳ ()s.accept

این اتصال مشتری TCP را به صورت غیرفعال می پذیرد، منتظر می ماند تا اتصال برسد (مسدود می شود).

 

 

روش های سوکت کلاینت

 

Sr.No. Method & Description
۱ ()s.connect

این روش به طور فعال اتصال سرور TCP را آغاز می کند.

 

 

روش های عمومی سوکت

Sr.No. Method & Description
۱ ()s.recv

این روش پیام TCP را دریافت می کند

۲ ()s.send

این روش پیام TCP را ارسال می کند

۳ ()s.recvfrom

این روش پیام UDP را دریافت می کند

۴ ()s.sendto

این روش پیام UDP را ارسال می کند

۵ ()s.close

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

۶ ()socket.gethostname

نام میزبان را برمی‌گرداند.

 

یک سرور ساده

برای نوشتن سرورهای اینترنتی، از تابع سوکت موجود در ماژول سوکت برای ایجاد یک شی سوکت استفاده می کنیم. سپس یک شی سوکت برای فراخوانی توابع دیگر برای راه اندازی یک سرور سوکت استفاده می شود.

اکنون تابع bind (نام میزبان، پورت) را فراخوانی کنید تا یک پورت برای سرویس شما در هاست داده شده مشخص شود.

سپس، متد پذیرش شیء برگشتی را فراخوانی کنید. این روش صبر می کند تا یک کلاینت به پورتی که شما مشخص کرده اید متصل شود و سپس یک شی اتصال را که نشان دهنده اتصال به آن کلاینت است برمی گرداند.

#!/usr/bin/python3           # This is server.py file
import socket                                         

# create a socket object
serversocket = socket.socket(
            socket.AF_INET, socket.SOCK_STREAM) 

# get local machine name
host = socket.gethostname()                           

port = 9999                                           

# bind to the port
serversocket.bind((host, port))                                  

# queue up to 5 requests
serversocket.listen(5)                                           

while True:
   # establish a connection
   clientsocket,addr = serversocket.accept()      

   print("Got a connection from %s" % str(addr))
    
   msg = 'Thank you for connecting'+ "\r\n"
   clientsocket.send(msg.encode('ascii'))
   clientsocket.close()

 

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

اجازه دهید یک برنامه کلاینت بسیار ساده بنویسیم که یک اتصال به پورت ۱۲۳۴۵ و یک میزبان معین را باز می کند. ایجاد یک کلاینت سوکت با استفاده از تابع ماژول سوکت پایتون بسیار ساده است.

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

مثال

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

#!/usr/bin/python3 # این فایل client.py است

#!/usr/bin/python3           # This is client.py file

import socket

# create a socket object
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

# get local machine name
host = socket.gethostname()                           

port = 9999

# connection to hostname on the port.
s.connect((host, port))                               

# Receive no more than 1024 bytes
msg = s.recv(1024)                                     

s.close()
print (msg.decode('ascii'))

 

حالا این 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

 

این نتیجه زیر را ایجاد می کند –

on server terminal
Got a connection from ('192.168.1.10', 3747)
On client terminal
Thank you for connecting

 

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

فهرستی از چند ماژول مهم در برنامه نویسی شبکه پایتون/اینترنت در زیر آمده است –

Protocol Common function Port No Python module
HTTP Web pages ۸۰ httplib, urllib, xmlrpclib
NNTP Usenet news ۱۱۹ nntplib
FTP File transfers ۲۰ ftplib, urllib
SMTP Sending email ۲۵ smtplib
POP3 Fetching email ۱۱۰ poplib
IMAP4 Fetching email ۱۴۳ imaplib
Telnet Command lines ۲۳ telnetlib
Gopher Document transfers ۷۰ gopherlib, urllib

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

 

منبع.

 

لیست جلسات قبل آموزش برنامه نوبسی پایتون ۳

  1. آموزش برنامه نویسی پایتون ۳
  2. آموزش موارد جدید در برنامه نویسی پایتون ۳
  3. آموزش مرور کلی برنامه نویسی پایتون ۳
  4. آموزش راه اندازی محیط برنامه نویسی پایتون ۳
  5. آموزش نحو در برنامه نویسی پایتون ۳
  6. آموزش انواع متغیرها در برنامه نویسی پایتون ۳
  7.  آموزش عملگرهای پایه در برنامه نویسی پایتون ۳
  8.  آموزش تصمیم گیری در برنامه نویسی پایتون ۳
  9.  آموزش حلقه ها در برنامه نویسی پایتون ۳
  10. آموزش اعداد در برنامه نویسی پایتون ۳
  11. آموزش رشته ها در برنامه نویسی پایتون ۳
  12.  آموزش لیست ها در برنامه نویسی پایتون ۳
  13.  آموزش تاپل ها در برنامه نویسی پایتون ۳
  14. آموزش دیکشنری در برنامه نویسی پایتون ۳
  15.  آموزش تاریخ و زمان در برنامه نویسی پایتون ۳
  16.  آموزش توابع در برنامه نویسی پایتون ۳
  17. آموزش ماژول ها در برنامه نویسی پایتون ۳
  18. آموزش فایل های ورودی/خروجی در برنامه نویسی پایتون ۳
  19. آموزش مدیریت استثنا در برنامه نویسی پایتون ۳
  20. آموزش شی گرایی در برنامه نویسی پایتون ۳
  21.  آموزش عبارات منظم در برنامه نویسی پایتون ۳
  22. آموزش CGI در برنامه نویسی پایتون ۳
  23.  آموزش دسترسی به پایگاه داده MySQL در برنامه نویسی پایتون ۳
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه