آموزش برنامه نویسی شبکه در برنامه نویسی پایتون 3
آموزش برنامه نویسی شبکه در برنامه نویسی پایتون 3
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش برنامه نویسی شبکه در برنامه نویسی پایتون 3 خواهیم پرداخت.
پیشنهاد ویژه : پکیج آموزش پایتون مختص بازار کار
پایتون دو سطح دسترسی به خدمات شبکه را فراهم می کند. در سطح پایین، میتوانید به پشتیبانی اولیه سوکت در سیستمعامل زیربنایی دسترسی داشته باشید، که به شما امکان میدهد کلاینتها و سرورها را برای پروتکلهای اتصال گرا و بدون اتصال پیادهسازی کنید.
پایتون همچنین دارای کتابخانه هایی است که دسترسی سطح بالاتری به پروتکل های شبکه در سطح برنامه خاص مانند FTP، HTTP و غیره را فراهم می کند.
این درس به شما درکی در مورد معروف ترین مفهوم در شبکه – برنامه نویسی سوکت می دهد.
سوکت چیست؟
سوکت ها نقطه پایانی یک کانال ارتباطی دو طرفه هستند. سوکت ها ممکن است در یک فرآیند، بین فرآیندهای روی یک ماشین یا بین فرآیندهای موجود در قاره های مختلف ارتباط برقرار کنند.
سوکت ها ممکن است بر روی چندین نوع کانال مختلف پیاده سازی شوند: سوکت های دامنه یونیکس، TCP، UDP و غیره. کتابخانه سوکت کلاس های خاصی را برای مدیریت حمل و نقل های رایج و همچنین یک رابط عمومی برای مدیریت بقیه ارائه می دهد.
سوکت ها واژگان خاص خود را دارند –
Sr.No. | Term & Description |
---|---|
1 | domain
خانواده پروتکل هایی که به عنوان مکانیسم انتقال استفاده می شود. این مقادیر ثابت هایی مانند AF_INET، PF_INET، PF_UNIX، PF_X25 و غیره هستند. |
2 | type
نوع ارتباطات بین دو نقطه پایانی، معمولاً SOCK_STREAM برای پروتکل های اتصال گرا و SOCK_DGRAM برای پروتکل های بدون اتصال. |
3 | protocol
به طور معمول صفر، این ممکن است برای شناسایی یک نوع پروتکل در یک دامنه و نوع استفاده شود. |
4 | hostname
شناسه یک رابط شبکه –
|
5 | port
هر سرور به مشتریانی که با یک یا چند پورت تماس می گیرند گوش می دهد. یک پورت ممکن است یک شماره پورت Fixnum، رشته ای حاوی شماره پورت یا نام یک سرویس باشد. |
ماژول سوکت
برای ایجاد یک سوکت، باید از تابع ()socket.socket موجود در ماژول سوکت استفاده کنید که دارای نحو کلی است –
1 |
s = socket.socket (socket_family, socket_type, protocol = 0) |
در اینجا توضیحات پارامترها آمده است
- socket_family – همانطور که قبلا توضیح داده شد، این AF_UNIX یا AF_INET است.
- socket_type – این SOCK_STREAM یا SOCK_DGRAM است.
- پروتکل – این معمولاً کنار گذاشته میشود و پیشفرض 0 است.
هنگامی که شی سوکت دارید، می توانید از توابع مورد نیاز برای ایجاد برنامه مشتری یا سرور خود استفاده کنید. در زیر لیستی از توابع مورد نیاز آمده است
روش های سوکت سرور
Sr.No. | Method & Description |
---|---|
1 | ()s.bind
این روش آدرس (نام میزبان، جفت شماره پورت) را به سوکت متصل می کند. |
2 | ()s.listen
این روش شنونده TCP را تنظیم و راه اندازی می کند. |
3 | ()s.accept
این اتصال مشتری TCP را به صورت غیرفعال می پذیرد، منتظر می ماند تا اتصال برسد (مسدود می شود). |
روش های سوکت کلاینت
Sr.No. | Method & Description |
---|---|
1 | ()s.connect
این روش به طور فعال اتصال سرور TCP را آغاز می کند. |
روش های عمومی سوکت
Sr.No. | Method & Description |
---|---|
1 | ()s.recv
این روش پیام TCP را دریافت می کند |
2 | ()s.send
این روش پیام TCP را ارسال می کند |
3 | ()s.recvfrom
این روش پیام UDP را دریافت می کند |
4 | ()s.sendto
این روش پیام UDP را ارسال می کند |
5 | ()s.close
این روش سوکت را می بندد |
6 | ()socket.gethostname
نام میزبان را برمیگرداند. |
یک سرور ساده
برای نوشتن سرورهای اینترنتی، از تابع سوکت موجود در ماژول سوکت برای ایجاد یک شی سوکت استفاده می کنیم. سپس یک شی سوکت برای فراخوانی توابع دیگر برای راه اندازی یک سرور سوکت استفاده می شود.
اکنون تابع bind (نام میزبان، پورت) را فراخوانی کنید تا یک پورت برای سرویس شما در هاست داده شده مشخص شود.
سپس، متد پذیرش شیء برگشتی را فراخوانی کنید. این روش صبر می کند تا یک کلاینت به پورتی که شما مشخص کرده اید متصل شود و سپس یک شی اتصال را که نشان دهنده اتصال به آن کلاینت است برمی گرداند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#!/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() |
یک کلاینت ساده
اجازه دهید یک برنامه کلاینت بسیار ساده بنویسیم که یک اتصال به پورت 12345 و یک میزبان معین را باز می کند. ایجاد یک کلاینت سوکت با استفاده از تابع ماژول سوکت پایتون بسیار ساده است.
socket.connect(hosname, port) یک اتصال TCP به نام میزبان در پورت باز می کند. هنگامی که یک سوکت را باز کردید، می توانید مانند هر شی IO از آن بخوانید. پس از اتمام، به یاد داشته باشید که آن را ببندید، همانطور که یک فایل را می بندید.
مثال
کد زیر یک کلاینت بسیار ساده است که به یک هاست و پورت معین متصل می شود، داده های موجود را از سوکت می خواند و سپس خارج می شود.
#!/usr/bin/python3 # این فایل client.py است
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#!/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 بالا را اجرا کنید تا نتیجه را ببینید.
1 2 3 4 5 |
# Following would start a server in background. $ python server.py & # Once server is started run client as follows: $ python client.py |
این نتیجه زیر را ایجاد می کند –
1 2 3 4 |
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 | 80 | httplib, urllib, xmlrpclib |
NNTP | Usenet news | 119 | nntplib |
FTP | File transfers | 20 | ftplib, urllib |
SMTP | Sending email | 25 | smtplib |
POP3 | Fetching email | 110 | poplib |
IMAP4 | Fetching email | 143 | imaplib |
Telnet | Command lines | 23 | telnetlib |
Gopher | Document transfers | 70 | gopherlib, urllib |
لطفاً تمام کتابخانه های ذکر شده در بالا را برای کار با پروتکل های FTP، SMTP، POP و IMAP بررسی کنید.
لیست جلسات قبل آموزش برنامه نوبسی پایتون 3
- آموزش برنامه نویسی پایتون 3
- آموزش موارد جدید در برنامه نویسی پایتون 3
- آموزش مرور کلی برنامه نویسی پایتون 3
- آموزش راه اندازی محیط برنامه نویسی پایتون 3
- آموزش نحو در برنامه نویسی پایتون 3
- آموزش انواع متغیرها در برنامه نویسی پایتون 3
- آموزش عملگرهای پایه در برنامه نویسی پایتون 3
- آموزش تصمیم گیری در برنامه نویسی پایتون 3
- آموزش حلقه ها در برنامه نویسی پایتون 3
- آموزش اعداد در برنامه نویسی پایتون 3
- آموزش رشته ها در برنامه نویسی پایتون 3
- آموزش لیست ها در برنامه نویسی پایتون 3
- آموزش تاپل ها در برنامه نویسی پایتون 3
- آموزش دیکشنری در برنامه نویسی پایتون 3
- آموزش تاریخ و زمان در برنامه نویسی پایتون 3
- آموزش توابع در برنامه نویسی پایتون 3
- آموزش ماژول ها در برنامه نویسی پایتون 3
- آموزش فایل های ورودی/خروجی در برنامه نویسی پایتون 3
- آموزش مدیریت استثنا در برنامه نویسی پایتون 3
- آموزش شی گرایی در برنامه نویسی پایتون 3
- آموزش عبارات منظم در برنامه نویسی پایتون 3
- آموزش CGI در برنامه نویسی پایتون 3
- آموزش دسترسی به پایگاه داده MySQL در برنامه نویسی پایتون 3
دیدگاه شما