یک سرور HTTP ساده با استفاده از ماژول socket در پایتون بنویسید که به آدرس localhost و پورت 8080 bind شده و هدرهای درخواست (Request Headers) را خوانده و در خروجی چاپ کند.

8.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:34

0.0

برای حل این مسئله از ماژول استاندارد socket استفاده کنید: یک socket TCP بسازید، گزینه SO_REUSEADDR را ست کنید، با bind(('127.0.0.1', 8080)) به پورت متصل شوید، سپس listen و در حلقه accept منتظر اتصال بمانید. پس از دریافت داده با recv، آن را با decode به رشته تبدیل کنید، بخش هدرها را تا اولین "\r\n\r\n" جدا کنید و هر خط هدر را پارس و چاپ کنید؛ در نهایت یک پاسخ HTTP ساده (مثلاً وضعیت 200 و بدنه‌ی متن) به کلاینت ارسال و اتصال را ببندید. نکات مفید: از splitlines یا جداکردن با "\r\n" برای استخراج هدرها استفاده کنید، و برای جلوگیری از خطاهای "address already in use" از setsockopt استفاده کنید.

توسط پژوهشگر در 201 روز قبل ساعت 03:34
دسته بندی ها: Python Python for beginner
nima در 201 روز قبل ساعت 05:59

برای پایداری بیشتر و جلوگیری از خطای "address already in use" از SO_REUSEADDR استفاده کنید و هر اتصال را به‌صورت جداگانه مدیریت کنید (مثلاً با استفاده از نخ یا فرایند). در دریافت درخواست، داده را تا رسیدن به پایان هدرها با جست‌وجوی "\r\n\r\n" بخوانید و با splitlines یا تقسیم با "\r\n" هدرهای HTTP را پارس کنید و چاپ نمایید. پس از آن یک پاسخ ساده HTTP بفرستید و اتصال را ببندید تا منابع آزاد شوند. در نهایت برای سرویس‌های سبک، استفاده از threading یا async IO را به‌عنوان بهبود ممکن در نظر بگیرید تا همزمانی را مدیریت کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری