Ваше завдання - написати HTTP-сервер з кодовим гольфом, який приймає GET-запити. Очевидно, це не повинно бути повністю представленим, але він повинен обслуговувати файли з каталогу.
Правила:
- Сервер HTTP повинен слухати на TCP-порту 36895 (0x901F)
- Він повинен обслуговувати файли з
/var/www
* NIX-систем (наприклад, Linux) абоC:\hgolf
з Windows. - Ви можете ігнорувати всі вхідні заголовки HTTP, окрім
GET
самого. - Якщо метод HTTP не GET, ви повинні надіслати назад код статусу "405 не підтримується" та тіло "405 не підтримується".
- Якщо файл не існує, ви повинні надіслати назад код статусу "Файл 404 не знайдено" та тіло "404 Файл не знайдено".
- Якщо файл існує, але його не вдалося прочитати з якихось причин, потрібно надіслати назад код статусу "500 Помилка сервера" та тіло "500 Помилка сервера".
- Якщо користувач запитує
/
або будь-який інший існуючий корінь каталогів (наприклад,/foo/
там, деfoo
існує каталог/var/www/
), дайте відповідь на порожній сторінці. - Ваша відповідь повинна містити принаймні мінімальні заголовки, щоб вміст відображався на Firefox 8.0 та Internet Explorer 8.0
- Ви повинні відповісти
Content-Type
набором заголовків, але вам потрібно лише підтримувати розширенняhtml => text/html
таtxt => text/plain
. Для будь-якого іншого розширення файлу Надіслатиapplication/octet-stream
як тип вмісту. - Ваш код повинен мати можливість передавати як ASCII, так і двійкові дані, хоча явно не потрібно їх розрізняти.
- Ви не можете використовувати сторонні бібліотеки.
- Ви не можете використовувати вбудовані класи або функції, призначені для обробки запитів HTTP (наприклад,
HttpListener
у C #) - Якщо ваш код буде працювати лише в певній ОС завдяки API-сокету, який ви використовували, будь ласка, вкажіть це.
Рішення повинні містити зображення, на яких воно відображає браузерну сторінку HTML.
Якщо у вас виникли запитання, будь ласка, не соромтесь запитувати! :)
http
модуль в Node.js ок?
..
пройти шлях як спосіб виривання визначеного кореня документа).