AmirTorn
AmirTorn
خواندن ۴ دقیقه·۲ سال پیش

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

بعد از مدت ها اومدیم ولی خیلی خفن اومدیم

امروز میخواهیم یک سرور و کلاینت ساده در پایتون بسازیم که درست یک سرور و کلاینت وب سایت رو شبیه سازی میکنه ولی بسیار ساده هست که ما داریم Network Programming یا Sockets Programming انجام میدیدم

بعدا در یک مقاله جدا درباره پایتون حرف میزنیم

Sockets Programming چیست ؟

socket یک کتابخانه در زبان برنامه نویسی پایتون هست برای برنامه نویسی سمت شبکه انجام داد یا ساده تر این که 2 تا دستگاه رو به هم وصل کنیم

بعدا در یک مقاله جدا درباره کتابخانه socket حرف میزنیم

Network Programming چیست ؟

یعنی برنامه نویسی سمت شبکه که یعنی برنامه ای بنویسیم که بتوانه یک شبکه ایجاد کنه یا همون مثال بالا که گفتم 2 تا دستگاه رو بهم وصل کنه

مفاهیم اصلی شبکه

کد برنامه :‌

سرور :

import socket
s = socket.socket()
host = socket.gethostname()
port = 12345
s.bind((host,port))
s.listen(5)
while True :
c,add = s.accept()
print(&quotGot connection form&quot,add)
c.send(&quotThank you for connecting&quot.encode())
c.close()

در کد بالا ما اومدیم و سرور خود را نوشتیم که میاد پیام Thank you for connecting رو به کلاینت ارسال میکنه و داخل خودش پیام Got connection form چاپ میکنه به همراه آدرس IP کلاینت

  • در خط کد اول اومدیم کتابخانه سوکت رو بارگیری کردیم
  • در خط کد دوم اومدیم شعی سوکت رو از کتابخانه سوکت بارگیری کردیم و ریخیتیم داخل متغیر s
  • در خط کد سوم اومدیم هاست خود را به عنوان سیستم محلی خودمون تعریف کردیم و در متغیر host ذخیره کردیم
  • در خط کد چهارم اومدیم عداد 12345 رو به عنوان پورت خودمون در نظر گرفتیم و ریختیم داخل متغیر port
  • در خط کد پنجم اومدیم هاست و پورت رو با اسنفاده از تابع bind() که داخل کتابخانه سوکت هست هاست و پورت رو به هم وصل کردیم
  • در خط کد ششم یک اتصال TCP راه اندازی کردیم
  • در خط کد هفتم یک حلقه بینهایت زدیم که به مسیر گوش کنه
  • در خط هشتم اومدیم اتصال TCP رو به صورت غیرفعال پذیرفتیم و ریختیم داخل متغیر add و c (غیرفعال پذیرفتیم یعنی اگه کلاینت بهش وصل نبود کد به خطا نخوره و همینطوری 24 ساعته سرور فعال باشه)
  • در خط نهم گفتیم که وقتی کلاینت وصل شد به سرور پیام Got connection form و آدرس آی پی کلاینت رو برامون داخل خود سرور چاپ کنه
  • در خط دهم اومدیم گفتیم پیام Thank you for connecting رو به کلاینت ارسال کنه
  • در خط یازدهم هم گفتیم برنامه بسته بشه

کلاینت :

import socket
s = socket.socket()
host = socket.gethostname()
port = 12345
s.connect((host,port))
print(s.recv(1024))
s.close()
  • در خط کد اول اومدیم کتابخانه سوکت رو بارگیری کردیم
  • در خط کد دوم اومدیم شعی سوکت رو از کتابخانه سوکت بارگیری کردیم و ریخیتیم داخل متغیر s
  • در خط کد سوم اومدیم هاست خود را به عنوان سیستم محلی خودمون تعریف کردیم و در متغیر host ذخیره کردیم
  • در خط کد چهارم اومدیم عداد 12345 رو به عنوان پورت خودمون در نظر گرفتیم و ریختیم داخل متغیر port
  • در خط پهجم گفتیم اتصال TCP برقرار کن به صورت فعال به هاست و پورتی که تعریف کردیم (به صورت فعال یعنی اگه سرور خاموش بود کد خطا بخوره)
  • در خط ششم گفتیم که پیام TCP که از سرور دریافت کردیم رو چاپ کن داخل کلاینت
  • در خط هفتم هم گفتیم که برنامه بسته شه

خب حالا برای اجرای این برنامه ها باید این خط کد هارو داخل دو تا فایل مختلف پایتون بنویسید و هر دو فایل رو باه اجرا کنید برای این کار cmd ویندوز رو باز کنید و به محلی که این برنامه هارو دارین برین و دو تا صفحه cmd باز کنید و اول سرور رو اجار کنید و بعد کلاینت رو

سرور اجرا شده در یک cmd
سرور اجرا شده در یک cmd
کلاینت اجرا شده در یک cmd دیگر
کلاینت اجرا شده در یک cmd دیگر

خب این فقط یک مثال ساده بود شما با کتابخانه سوکت خیلی کارها میتوانید انجام بدید


خب حالا بریم سراغ این که چرا اون اول مطلب گفتم که داریم سرور و کلاینت وب سایت رو شبیه سازی میکنیم چون شما دقت کنید میبیند که اگه حتی یک نفر هم داخل یک سایت نباشه سرور سایت روشنه اینجا هم همین اگه کلاینت به سرور وصل نشه هم سرور ما به خطا نمیخوره و اگه سرور خاموش باشه جا به جا کلاینت به خطا میخوره و درست همون اتفاقی که داخل وب سایت میفته داره میفته

مارو در شبکه های اجتماعی زیر دنبال کنید ??

یوتیوب

اینستاگرام

تلگرام

ساب ردیت

خب تا مقاله های دیگر خدانگهدار ??

مقاله های پیشنهاد شده
آشنایی با مدل TCP/IP , آشنایی با مدل OSI , دیوار آتشین




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