آموزش برنامه نویسی Socket در زبان Python : در این نوشته و همچنین بخش های بعدی این نوشته میخواهیم برنامه نویسی Socket به زبان برنامه نویسی Python را تجربه کنیم!
Socket Programming یا برنامه نویسی تحت شبکه، به هر نوع برنامه ای که نیاز به ارتباط با شبکه ای دیگر بوسیله ساخت سوکت خارج از یک کامپیوتر داشته باشد، گویند.
معمولا در این نوع برنامه نویسی از هر دو سمت Client و Server برای جا به جایی داده ها بهره گرفته میشود.
پس از یادگیری اصول پایه برنامه نویسی در هر زبانی، به مرحله ای میرسید که نیاز به گام گذاشتن در بیرون از گستره سیستم عامل و یک دستگاه تکی دارید.
برنامه نویسی تحت شبکه امروزه بسیار کاربرد دارد و به خاطر گستردگی و امکاناتی که دراختیار میگذارد، در بسیاری از برنامه ها کاربرد دارد.
زبان برنامه نویسی Python پتانسیل و جنبش بسیار خوبی برای برنامه نویسی تحت شبکه یا Socket Programming دارد.
به همین جهت این زبان را برای آغاز برای آغاز برنامه نویسی تحت شبکه گزینش کردیم.
برای برنامه نویسی شبکه در زبان پایتون، نیاز است تا به تمام Syntax ها و مفهوم های ابتدایی این زبان آشنا باشید.
اگر آشنایی با این زبان ندارید، پیشنهاد میکنیم، نخست از برگه ” آموزش برنامه نویسی پایتون” با این زبان آشنا شوید و سپس این آموزش را دنبال کنید.
برای ارتباط با یک شبکه نخست از هر چیزی باید یک “Socket” بسازیم.
برای اینکه یک فایل تازه در IDLE پایتون بسازید و نخست از هر چیزی با با دستور import کتابخانه سوکت را درون ریزی کنید.
import socket
پس از آن با دستور
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
یک شی (آبجکت) از Socket بسازید.
کد شما تا به اینجای کار باید به شکل زیر باشد
import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
تا به اینجا ما کتابخانه کار با socket ها را درون ریزی کردیم و یک سوکت با دو پارامتر ساختیم.
نخستین پارامتر یعنی AF_INET به گروه آدرس دهی ipv4 اشاره دارد؛ آدرس دهی ipv6 متفاوت است که در این نوشته به آن نمیپردازیم.
دومین پارامتر یعنی SOCK_STREAM به این معنی است که ما با پروتکل TCP کار میکنیم.
نکته : برای ساخت اتصال بصورت Low-Level و به شیوه کانکشنی میتوانید ساخت یک سوکت را به شکل زیر انجام دهید.
s=socket.socket()
در واقع کد بالا آبجکت سوکتی با آرگومان های پیشفرض را در متغیر s میسازد.
در برنامه نویسی تحت شبکه بطور کلی یک برنامه سرور و یک برنامه کلاینت خواهیم داشت.
برنامه سرور همانطور که از نام آن پیداست، باید خدماتی را به کلاینت (کاربر) ارائه کند، بنابراین ساز و کار فایل سروری ایین خواهد بود که یک راه ارتباطی بسازد و بر روی آن راه ارتباطی گوش به زنگ برای ارائه سرویس باشد.
در کد فایل برنامه سرور در این باره بیشتر توضیح میدهیم
هم اکنون میخواهیم یک فایل سرور بسازیم و به آن وصل شویم.
#import socket library import socket s=socket.socket() #reserve a port in Computer port=1440 #binidng s.bind(('',port)) s.listen() while True: # Establish connection with client. c, addr = s.accept() print("Got connection from", addr) # send a thank you message to the client. c.send(b'Thank you for connecting') # Close the connection with the client c.close()
Bind کردن در واژه به معنی گرفتار کردن است، دقیقا کاری که میخواهیم انجام شود! در واقع داریم یک راه ارتباطی بر روی یک آی پی (در اینجا یک رشته خالی گذاشته ایم تا آی پی محلی 127.0.0.1 در نظر گرفته شود) و یک پورت ویژه میسازیم و میخواهیم این راه را رزور کرده باشیم.
نکته: متغیر c یک سوکت(درخواست) پذیرفته شده است که میتوانید از این پس با آن کار کنید.
نکته: متغیر addr در این خط آی پی آدرس شخص کلاینت (کاربر) متصل شده را نگه میدارد.
نکته: تا زمانی که اتصالی پذیرفته (accept) نشود، کد های بعدی اجرا نمیشوند.
نکته: در این کد و از شیء c به جای شیء s استفاده شده است چرا که شیء c سوکت پذیرفته شده است نه s !
نکته: در دستور چاپ پیام پیش از باز شدن دابل کوتیشن از حرف b برای تبدیل رشته به برابر باینری آن استفاده شده است، بدون اینکار کامپایلر خطا میدهد.
در نوشته آینده به توضیح کامل تر متد های سوکت و همچنین شیوه ساخت یک فایل نمونه کلاینت میپردازیم.
دیدگاه خود را بیان کنید
kali boy
اکتبر 28, 2019 در 1:45 ق.ظ
برا من که تازه شروع کردم عالی بود….good luck