یک سرور HTTP ساده با استفاده از ماژول socket در پایتون بنویسید که به localhost روی پورت 8080 گوش دهد (socket.listen) و برای هر درخواست GET یک صفحه HTML ساده برگرداند.

23.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 04:26

0.0

برای حل این مسئله از ماژول استاندارد socket پایتون استفاده کنید: یک سوکت TCP بسازید، گزینه SO_REUSEADDR را تنظیم کنید، با bind به ('0.0.0.0', 8080) متصل شوید و با socket.listen(5) به اتصالات گوش دهید. در حلقه‌ای accept را فراخوانی کرده و درخواست دریافتی را با recv بخوانید، اگر درخواست با "GET" شروع شد یک پاسخ HTTP شامل status line، هدرهای مناسب مانند Content-Type و Content-Length و سپس بدنه HTML ارسال کنید و اتصال کلاینت را ببندید. برای تست می‌توانید از مرورگر یا curl استفاده کنید؛ توجه داشته باشید که این پیاده‌سازی پایه‌ای و مسدودکننده است—برای پشتیبانی از چند کلاینت هم‌زمان می‌توان بعداً threading یا asyncio را اضافه کرد.

توسط پژوهشگر در 198 روز قبل ساعت 04:26
دسته بندی ها: Python Python for beginner
arash در 198 روز قبل ساعت 04:27

برای پیاده‌سازی ساده با socket حتما گزینه SO_REUSEADDR را قبل از bind تنظیم کنید و هنگام پاسخ‌دهی هدرهای استاندارد HTTP شامل Status-Line، Content-Type و Content-Length را با CRLF صحیح (\r\n) ارسال کرده و از sendall استفاده کنید تا داده‌ها کامل فرستاده شوند. دریافت داده‌ها را با حداکثر طول منطقی (مثلاً 4096 یا 8192 بایت) محدود کنید و بررسی کنید که درخواست واقعاً با "GET" شروع شده تا از پردازش درخواست‌های نامعتبر جلوگیری شود. پیاده‌سازی پایه‌ای به صورت مسدودکننده است، پس برای هم‌زمانی از threading یا asyncio استفاده کنید و در نهایت همیشه اتصالات را در بلوک finally ببندید تا نشتی منابع رخ ندهد.

گزارش

1 پاسخ

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

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