Ваша задача состоит в том, чтобы написать HTTP-сервер кода-гольфа, который будет принимать запросы GET. Это, очевидно, не должно быть полнофункциональным, но оно должно обслуживать файлы из каталога.
Правила:
- HTTP-сервер должен прослушивать TCP-порт 36895 (0x901F)
- Он должен обслуживать файлы из
/var/www
систем * NIX (например, Linux) илиC:\hgolf
из Windows. - Вы можете игнорировать все входящие заголовки HTTP, кроме самого
GET
себя. - Если метод HTTP не GET, вы должны отправить обратно код состояния «405 Not Supported» и текст «405 Not Supported».
- Если файл не существует, необходимо отправить обратно код состояния «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 ок?
..
в пути как способ вырваться из определенного корня документа).