با استفاده از ماژول socket در پایتون، یک کلاینت ساده HTTP بنویسید که به یک سرور وب متصل شود، درخواست GET با هدرهای دلخواه ارسال کند و هدرها و بدنهٔ پاسخ را چاپ کند.

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

0.0

برای حل این مسئله از socket.socket() استفاده کنید، به (host, 80) متصل شوید و یک رشته درخواست HTTP مثل "GET / HTTP/1.1\r\nHost: example.com\r\nUser-Agent: MyClient\r\nX-Custom: value\r\nConnection: close\r\n\r\n" را با sendall() ارسال کنید؛ سپس در حلقه‌ای با recv(4096) داده‌ها را دریافت کرده و پس از پایان اتصال خروجی را decode کنید و با split('\r\n\r\n',1) هدرها و بدنه را جدا و چاپ کنید. نکات: حتما هدر Host و Connection: close را قرار دهید، برای جلوگیری از بلوکه شدن می‌توانید timeout تعیین کنید و برای ساده‌سازی از پورت 80 و عدم پردازش chunked encoding استفاده کنید.

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

این توضیح یک کلاینت HTTP ساده با socket.socket و اتصال به پورت 80 را نشان می‌دهد که درخواست GET با هدرهای دلخواه را می‌فرستد و هدرها و بدنه پاسخ را چاپ می‌کند. برای پایداری بهتر، روی سوکت timeout تنظیم کنید تا در صورت قطع شبکه یا پاسخ طولانی گیر نکند. حتماً هدرهای Host و Connection: close را اضافه کنید تا از بروز مشکلات مربوط به نگه‌داشتن اتصال جلوگیری شود. برای جدا کردن هدرها از بدنه می‌توانید از split('\r\n\r\n', 1) استفاده کنید و داده‌ها را پس از دریافت با decode به نمایش درآورید.

گزارش

1 پاسخ

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

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