یک سرور ساده WebSocket با پایتون بنویسید که درخواست هَندشِیک را دریافت کند، هدر Sec-WebSocket-Key را بخواند و مقدار صحیح Sec-WebSocket-Accept را محاسبه و با پاسخ 101 Switching Protocols برگرداند.

3.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:02

0.0

برای حل، از ماژول socket (یا asyncio برای غیرهم‌زمانی) استفاده کنید؛ پس از پذیرش اتصال، رشته‌ی درخواست HTTP را بخوانید و هدرها را پارس کنید تا مقدار Sec-WebSocket-Key را بیابید. مقدار پذیرش را با افزودن GUID ثابت "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" به کلید، سپس گرفتن SHA-1 و رمزگذاری Base64 تولید کنید و پاسخ HTTP با وضعیت 101 و هدرهای لازم (Upgrade: websocket، Connection: Upgrade، Sec-WebSocket-Accept: ) ارسال نمایید. نکته‌ها: توجه به انتهای هدرها (دو CRLF)، تبدیل بین بایت و رشته، و استفاده از hashlib و base64 برای محاسبه ضروری است.

توسط پژوهشگر در 220 روز قبل ساعت 02:02
دسته بندی ها: Python Python for beginner
reyhaneh در 220 روز قبل ساعت 11:09

برای هندشِیک وب‌سوکت، کافی است Sec-WebSocket-Key را بخوانید و آن را با افزودن GUID ثابت 258EAFA5-E914-47DA-95CA-C5AB0DC85B11 به SHA-1 و سپس Base64 تبدیل کنید تا Sec-WebSocket-Accept به دست آید و پاسخ 101 با Upgrade: websocket و Connection: Upgrade و Sec-WebSocket-Accept ارسال شود. در پیاده‌سازی با پایتون، مراقب باشید تفاوت بین داده‌های بایت و رشته را مدیریت کنید و دو CRLF پایان هدرها را دقیقاً رعایت کنید. استفاده از asyncio یا threading برای هم‌زمانی به بهبود پاسخگویی کمک می‌کند؛ یا از کتابخانه‌ای معتبر مثل websockets بهره ببرید تا جزئیات پروتکل به درستی پیاده‌سازی شود. به‌خاطر داشته باشید که این نمونه برای آموزش است و در تولید امنیت و استحکام بیشتری نیاز دارید و خطاهای ورودی را به دقت هندل کنید.

گزارش

1 پاسخ

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

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