CodeLogy - کدلوژی
CodeLogy - کدلوژی
خواندن ۴ دقیقه·۲ سال پیش

سوکت در پایتون

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

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

سوکت(socket) در شبکه همانند تلفن عمل میکند و بین یک یا چند کامپیوتر باهم را مقدور میسازد از این رو یادگیری این بحث برای برنامه نویسان از اهمیت بسیاری برخوردار است.

در این این مقاله شما را بیشتر با سوکت و استفاده از این موضوع در پایتون اشنا میکنیم.


آدرس IP

فرض کنید میخوایم از رستوران X برای نهار غذا سفارش دهیم مراحل این کار به شکل زیر هست:

  • انتخاب غذا
  • تماس با رستوران
  • دادن سفارش

ما وقتی غذا را سفارش میدهیم برای اینکه پیک غذا را برای ما بیارد نیاز دارد که ادرس خانه مارا داشته باشد ماهم باید شماره تلفن ان رستوران یا ادرس ان رستوران را داشته باشیم.

دقیقا IP شبیه ادرس کامپیوتر ما در اینترنت است که هرکس با اون ادرس با ما اطلاعات رد بدل میکنند.


پورت در شبکه

پورت همانند در خانه در مثال قبل عمل میکند و کار گرفتن ورودی و خروجی را بر عهده دارد.

65535 پورت وجود دارد که به دو گروه رزرو شده و مابقی پورت‌ها رزرو نشده هستند از پورت 1 تا 1024

در دسته پورت های رزرو شده قرار دارند.


پروتکل

پروتکل ها قوانین و قراردادهای هستند که تعیین می‌کنند که برنامه ها و ماشین ها چگونه با هم ارتباط برقرار کنند.در واقع، پروتکل‌های شبکه، ماشین‌ها را قادر می‌سازند تا از طریق یک زبان مشترک با یکدیگر صحبت کرده و تبادل اطلاعات کنند.مثل پروتکل UDP یا TCP.

پروتکل TCP مخفف (Transmissin Control Protocol) در جای استفاده میشود که امنیت و انتقال داده‌ها با امنیت بالا، به ترتیب و بی‌عیب و نقص صورت بگیرد در این پروتکل خطاها برسی میگردد و اگر خطایی باشد دیتا دوباره ارسال میگردد.


انواع سوکت

سکوت ها انواع مختلفی دارند اما دونوع stream و datagram بیشترین استفاده را دارند ما در این مقاله با stream کار داریم که بر پایه tcp طراحی شده است این سکوت قبل از جابه جای داده باید یک اتصال امن و قدرتمند ایجاد شود تا داده ها با دقت بالا جابه جا شوند.


کتاب خانه SOCKET در پایتون

برنامه نویسی سوکت در پایتون با کتاب خانه استاندارد socket امکان پذیر است.

در برنامه نویسی سوکت به طور معمول از یک سرور و یک کلاینت استفاده میکنیم البته ارتباط غیرکلاینت-سرور نیز امکان پذیر است.

کدنویسی سمت سرور

قبل از شروع ما باید کتاب خانه socket را به کد خودمون وارد کنیم:

در مرحله اول باید شی از کلاس socket ایجاد کنیم:

همان طور که می‌بینید در هنگام تعریف شی به آن دو آرگومان وارد کردیم ارگمان اول نوع ورژن ip را مشخص می کند.AF_INET نشان میدهد ما میخوایم از ipv4 استفاده میکنیم.آرگومان دوم هم نشان مشخص میکند که ما از stream استفاده میکنیم.

حال که ما شی سوکت خودمون رو ایجاد کردیم باید کاری کنیم که در دسترس بشه که برای این کار از متد blind استفاده میکنیم:

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

در مرحله بعد باید سوکت را درحالت گوش دادن قرار بدهیم:

با متد listen سوکت را در حالت گوش دادن میزاریم listen یک ورودی از ما میگیرد که تعیین میکند چند نفر میتونن به شبکه ما وصل بشن که من 9 در نظر دارم

در کد بالا ما یک حلقه تعریف کردیم که داخل اون میام هرکی که میخواد به سرور ما کانکت بشه قبول کنه و یک دیتایی بایت با محتوای ok برای اون ارسال کنه دقت کنید که دیتای ارسالی باید بایت باشه و در اخر ارتباط میبنده.

سمت کلاینت به این شکل میشه:


مثل کد سرور ما یک شی از نوع socket تعریف کردیم و به ip 127.0.0.1 که لوکال هاست هست و پورت 5230 کانکت میشیم و منتظر میشیم که از سرور برای ما یک دیتا ارسال بشه با متد recv ورودی این متد مربوط به اندازه پیامی است که قراره دریافت بشه و اون دیتا رو در متغیر data قرار میدیم دیتا دریافتی به صورت بایت هست و بعدش نمایشش میدیم و در اخر ارتباط میبندیم:

خروجی کد
خروجی کد

اگه از این پست خوشت اومد ممنون میشم لایک کنی.

برنامه نویسیسمت کلاینتسوکتشبکه
ارائه مطالب و مقالات علوم کامپیوتر، برنامه نویسی، لینوکس و دنیای جذاب هک و امنیت - شبکه های اجتماعی ما zil.ink/codelogy
شاید از این پست‌ها خوشتان بیاید