آموزش سوکت نویسی با پایتون
برنامهنویسی سوکت با پایتون
برنامهنویسی سوکت با پایتون روشی برای اتصال دو گره در یک شبکه برای برقراری ارتباط با یکدیگر است. یک سوکت (گره) به یک پورت خاص در یک IP گوش میدهد، درحالیکه سوکت دیگر برای ایجاد یک اتصال به دیگری میرسد. سرور سوکت شنونده را تشکیل میدهد درحالیکه کلاینت به سمت سرور میرود. برای یادگیری سوکت نویسی با پایتون لازم است پایههای خود را با دوره آموزشی پایه برنامهنویسی پایتون تقویت کنید و اصول اولیه را بیاموزید. همچنین آموزش سوکت نویسی با پایتون میتوانید به شما در متخصص شدن در این راه کمک کند.
سوکتها ستون فقرات واقعی در پشت وبگردی هستند. به عبارت سادهتر، یک سرور و یک مشتری یا کلاینت وجود دارد. برنامهنویسی سوکت با واردکردن کتابخانه سوکت و ساخت یک سوکت ساده شروع میشود. در این مقاله میخواهیم باهم به سوکت نویسی به پایتون بپردازیم و یک نمونه عملی سوکت نویسی را ارائه دهیم.
برنامهنویسی سوکت چیست؟
سوکتها (معروف به برنامهنویسی سوکت) برنامهای است که دو سوکت را قادر میسازد تا دادهها را بهصورت دوطرفه در هرلحظه ارسال و دریافت کنند.
این بااتصال دو سوکت (یا گره) به یکدیگر و امکان برقراری ارتباط در زمان واقعی کار میکند و یک گزینه عالی برای ساخت تعداد زیادی برنامه است.
چرا از سوکتها برای ارسال داده استفاده میکنیم؟
برنامههای کاربردی متصل به اینترنت که نیاز به کار در زمان واقعی «Real Time» دارند، از اجرای سوکت ها در کد شبکه خود بسیار سود میبرند. چند نمونه از برنامههایی که از برنامهنویسی سوکت استفاده میکنند عبارتاند از:
- صفحات وب که اعلانهای زنده را نشان میدهند (فیس بوک، توییچ، eBay)
- بازیهای آنلاین چند نفره (League of Legends، WoW، Counter Strike)
- برنامههای چت (WhatsApp، WeChat، Slack)
- داشبوردهای داده بلادرنگ (Robinhood، Coinbase)
- دستگاههای اینترنت اشیا (نست، آگوست لاک)
پایتون برخلاف جاوا اسکریپت زبانی است که بهصورت همزمان اجرا میشود. به همین دلیل است که asyncio توسعه داده شد – برای قویتر کردن پایتون، بهویژه برای ماهیت برنامهنویسی سوکت. ازاینرو برنامهنویسی سوکت در پایتون بسیار پر اهمیت است و میان توسعهدهندگان طرفداران زیادی دارد.
با سوکت های جریان، دادهها را میتوان در هر زمان ارسال یا دریافت کرد. درصورتیکه برنامه پایتون شما در میانه اجرای کد باشد، رشتههای دیگر میتوانند دادههای سوکت جدید را مدیریت کنند. کتابخانههایی مانند asyncio چندین رشته را پیادهسازی میکنند، بنابراین برنامه پایتون شما میتواند بهصورت ناهمزمان کار کند. به همین دلیل آموزش سوکت نویسی با پایتون امروزه به یک آموزش جذاب و پرطرفدار تبدیل شده است.
اصول برنامهنویسی سوکت در پایتون
در اصل، پایتون یک کلاس سوکت ارائه میدهد تا توسعهدهندگان بتوانند بهراحتی اشیاء سوکت را در کد منبع خود پیادهسازی کنند. در آموزش سوکت نویسی با پایتون به این موارد اشاره میکنیم. ما میتوانیم با سه مرحله ساده، برنامهنویسی سوکت با پایتون را در برنامه خود شروع کنیم:
مرحله ۱ : ایمپورت کردن کتابخانههای سوکت نویسی در پایتون
برای استفاده از یک شی سوکت در برنامه خود، با واردکردن کتابخانه سوکت شروع کنید. دستور زیر را به کار ببرید.
import socket
مرحله ۲ : اکنون میتوانیم سوکتهایی را در کد خود ایجاد کنیم.
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
این کد یک شی سوکت ایجاد میکند که ما در متغیر “sock” ذخیره میکنیم. سازنده به ترتیب یک پارامتر خانواده و نوع ارائهشده است. پارامتر خانواده روی مقدار پیشفرض تنظیمشده است که عبارت است از Address Format Internet.
پارامتر نوع روی Socket Stream تنظیمشده است، همچنین پیشفرض است که «جریانهای بایتی متوالی، قابلاعتماد، دوطرفه و مبتنی بر اتصال» را از طریق TCP1 فعال میکند.
مرحله ۳ : اتصال را باز و بسته کنید
هنگامیکه یک شی سوکت اولیه داریم، میتوانیم از روشهایی برای باز کردن یک اتصال، ارسال داده، دریافت داده و درنهایت بستن اتصال استفاده کنیم.
sock.connect(('0.0.0.0', 8080)) sock.send("Twenty-five bytes to send") sock.recv(4096) sock.close()
نمونه برنامه سوکت نویسی در پایتون
import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
در این آموزش سوکت نویسی با پایتون ما یک نمونه سوکت ساختیم و دو پارامتر به آن پاس دادیم. پارامتر اول AF_INET و پارامتر دوم SOCK_STREAM است. AF_INET به آدرس خانواده IPv4 اشاره دارد. SOCK_STREAM به معنای پروتکل TCP اتصال گرا است.
اکنون میتوانیم با استفاده از این سوکت به سرور متصل شویم.
اتصال به سرور:
توجه داشته باشید که اگر در هنگام ایجاد یک سوکت خطایی رخ دهد، یک سوکت. خطا داده میشود و فقط با دانستن IP آن میتوانیم به سرور متصل شویم. با استفاده از این میتوانید IP سرور را پیدا کنید، ما در اینجا به سرور گوگل با استفاده از برنامهنویسی سوکت با پایتون متصل میشویم.
$ ping www.google.com You can also find the ip using python: import socket ip = socket.gethostbyname('www.google.com') print )ip(
در اینجا نمونهای از اسکریپت برای اتصال به گوگل آورده شده است.
# نمونه اسکریپت برای اتصال به گوگل در پایتون import socket # for socket import sys try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print ("سوکت با موفقیت ایجاد شد") except socket.error as err: print ("ایجاد سوکت با خطا انجام شد %s" %(err)) # پورت پیشفرض برای سوکت port = 80 try: host_ip = socket.gethostbyname('www.google.com') except socket.gaierror: # این بدان معنی است که نمیتواند میزبان را حل کند print ("در حل میزبان خطایی روی داد ") sys.exit() # اتصال به سرور s.connect((host_ip, port)) print ("سوکت با موفقیت به گوگل متصل شد ")
خروجی :
- اولازهمه یک سوکت درست کردیم.
- سپس IP google را حل کردیم و درنهایت به google متصل شدیم.
- اکنون باید بدانیم چگونه میتوانیم برخی از دادهها را از طریق یک سوکت ارسال کنیم.
- برای ارسال داده، کتابخانه سوکت دارای یک تابع sendall است. این عملکرد به شما امکان میدهد دادهها را به سروری که سوکت به آن متصل است ارسال کنید و سرور نیز میتواند با استفاده از این عملکرد دادهها را برای مشتری ارسال کند.
کار با کتابخانههای برنامهنویسی سوکت در پایتون یک نیاز ضروری برای مهندسین شبکه است. در آموزش سوکت نویسی با پایتون کار با سوکت ها و کتاب خانه های سوکت نویسی در پایتون ارائه میشود.
سوکت در برنامهنویسی شبکه چیست؟
سوکت یک نقطه اتصال ارتباطی (نقطه پایانی) است که میتوانید با آن نام و آدرس آن را در یک شبکه نشان دهید. برنامهنویسی سوکت نشان میدهد که چگونه از API های سوکت برای ایجاد پیوندهای ارتباطی بین فرآیندهای راه دور و محلی استفاده کنید. رابطهای برنامه کاربردی سوکت (API) استاندارد شبکه برای TCP/IP هستند.
برنامهنویسی سوکت با پایتون دو سطح دسترسی به خدمات شبکه را فراهم میکند. در سطح پایین، میتوانید به پشتیبانی سوکت اصلی در سیستمعامل زیربنایی دسترسی داشته باشید، که به شما امکان میدهد کلاینتها و سرورها را برای پروتکلهای اتصال گرا و بدون اتصال پیادهسازی کنید.
پایتون همچنین دارای کتابخانههایی است که دسترسی سطح بالاتری به پروتکلهای شبکه در سطح برنامه خاص مانند FTP، HTTP و غیره را فراهم میکند.
انواع سوکت در برنامهنویسی شبکه
چهار نوع سوکت در دسترس کاربران است. دو مورد اول بیشتر مورداستفاده قرار میگیرند و دو مورد آخر بهندرت استفاده میشوند. فرض بر این است که فرآیندها فقط بین سوکتهای هم نوع ارتباط برقرار میکنند، اما هیچ محدودیتی وجود ندارد که از ارتباط بین سوکتهای انواع مختلف جلوگیری کند.
سوکت های جریان – Stream Sockets
این سوکت ها از TCP (پروتکل کنترل انتقال) برای انتقال دادهها استفاده میکنند. اگر تحویل غیرممکن باشد، فرستنده یک نشانگر خطا دریافت میکند. رکوردهای داده هیچ مرزی ندارند. اینیک سوکت مهم و پایهای در سوکت نویسی در پایتون است.
سوکت های دیتاگرام- Datagram Sockets
با این سوکت تحویل در یک محیط شبکه تضمین نمیشود. آنها بدون اتصال هستند زیرا مانند Stream Sockets نیازی به اتصال بازندارید – شما یک بسته با اطلاعات مقصد میسازید و آن را ارسال میکنند.
سوکتهای خام –Raw Sockets
اینها دسترسی کاربران را به پروتکلهای ارتباطی زیربنایی، که از انتزاعهای سوکت پشتیبانی میکنند، فراهم میکنند. این سوکت ها معمولاً دیتاگرام گرا هستند، اگرچه مشخصات دقیق آنها به رابط ارائهشده توسط پروتکل بستگی دارد. سوکت های خام برای کاربر عمومی در نظر گرفته نشده است.
آنها عمدتاً برای کسانی که علاقهمند به توسعه پروتکلهای ارتباطی جدید، یا برای دستیابی به برخی از امکانات رمزآلود یک پروتکل موجود هستند، ارائهشدهاند. اگر دوست دارید در برنامهنویسی سوکت در پایتون به یک متخصص تبدیل شوید، کار با این سوکت را یاد بگیرید.
سوکتهای بستههای متوالی – Sequenced Packet Sockets
آنها شبیه به سوکت جریان هستند، با این استثنا که مرزهای رکورد حفظ میشوند. این رابط فقط بهعنوان بخشی از انتزاع سوکت سیستمهای شبکه (NS) ارائه میشود و در اکثر برنامههای کاربردی جدی NS بسیار مهم است. سوکت های بسته متوالی به کاربر این امکان را میدهند که هدرهای پروتکل بسته توالی (SPP) یا پروتکل دادههای اینترنتی (IDP) را روی یک بسته یا گروهی از بستهها، یا با نوشتن یک هدر نمونه اولیه همراه با هر دادهای که قرار است ارسال شود، دستکاری کند.
نتیجه گیری
پایتون به علت وجود کتابخانههای مفید و متنوع، یکزبان برنامهنویسی عالی برای سوکت نویسی است. ازاینرو سوکت نویسی در پایتون یک متد بسیار جذاب بین توسعهدهندگان است. برای شروع برنامهنویسی سوکت با پایتون لازم است که شما اصول پایهای کار با سوکت را یاد بگیرید و همچنین تا حدودی به پایتون و اسکریپتهای آن مسلط باشید.
همچنین شرکت در دورههای آموزش سوکت نویسی با پایتون میتواند گزینه سریع و جذابی باشد که شمارا به یک برنامهنویس شبکه تبدیل میکند.