[обо мне] [мои сертификаты] [банеры] [JavaScript] [Java-приложение] [ссылки]

HTTP-сервер с кэшированием

Описанное здесь приложение представляет собой простой HTTP-сервер с кэшированием. Приложение запускается java-интерпретатором и использует стандартный поток вывода для ведения журнала обращений к серверу.

Формат запуска:
java -jar httpd.jar <путь> [<порт>]
<путь> - путь к корневому каталогу сайта.
<порт> - порт, который прослушивает сервер. По умолчанию 80.

Пример:
java -jar httpd.jar C:\Docs\MySite\ 8080
устанавливает HTTP-сервер на порт 8080 с корневым каталогом сайта C:\Docs\MySite\

Файл Размер (байт) Описание
httpd.jar 7,511 Java-архив содержащий откомпилированный код сервера пригодный к запуску.
httpd-s.zip 4,417 Исходные тексты сервера сжатые в формате zip.


Краткое описание исходных кодов

MimeHeader.java

Этот файл содержит исходный код класса MimeHeader, который предназначен для представления заголовков MIME. MIME считается стандартом Internet для связи приложений через систему электронной почты (RFC 1341). Протокол HTTP расширяет понятие заголовка MIME-передачи стандартных пар атрибут/значение между клиентом и сервером HTTP.

Класс MimeHeader расширяет стандартный класс Hashtable и используется для сохранения MIME-атрибута и его значения в виде пары ключ/значение. Класс имеет два конструктора: для создания пустого заголовка и для создания заголовка из строки.

Метод parse() используется для заполнения хеш-таблицы заголовка из строки, имеющей формат MIME.

Метод toString() является антонимом parse() и предназначен для создания строки в формате MIME на основе данных класса.

UrlCasheEntry.java

Файл содержит класс UrlCasheEntry и предназначен для приведение в соответствие URL, по которому запрашивается документ, с соответствующему данному документу объекту MimeHeader и самими данными документа.

LogMessage.java

Содержит описание интерфейса LogMessage. Этот интерфейс определяет один метод log(), которому передаётся единственный параметр класса String. Этот метод используется для осуществления вывода сообщений от сервера.

Httpd.java

Содержит основной класс, реализующий функциональность HTTP-сервера.

Этот класс содержит четыре главных переменных экземпляра: port, docRoot, log и cache. Три из этих переменных инициализируются самим конструктором httpd:
httpd(int порт, String каталог, LogMessage журнал)

Четвёртая переменная cache является объектом класса Hashtable, где собрана информация о всех кэшируемых в памяти файлах, и инициализируется после создания объекта.

Алгоритм функционирования сервера следующий: после инициализации создаётся сокет сервера и в бесконечном цикле ожидается подключение. После подключения клиентского сокета анализируется запрос из входного потока и если это команда GET, анализируется запрашиваемый документ. Если такой документ есть в кэше, в поток вывода выводится ответ сервера, MIME-заголовок этого документа и сам документ. Если такого документа в кэше нет, то производится поиск запрашиваемого файла на диске, и если файл существует, для него создаётся MIME-заголовок и запись в кэше, после чего он выдаётся в выходной поток. После выдачи документа в поток вывода ожидается подключение следующего клиентского сокета.





   

Статистика Реклама
Мониторинг сервера осуществляется системой UpTime.Ru
Rambler's Top100
www.software-testing.ru -- \xf2\xe5\xf1\xf2\xe8\xf0\xee\xe2\xe0\xed\xe8\xe5 \xe8 \xea\xe0\xf7\
xe5\xf1\xf2\xe2\xee \xef\xf0\xee\xe3\xf0\xe0\xec\xec\xed\xee\xe3\xee ^M
\xee\xe1\xe5\xf1\xef\xe5\xf7\xe5\xed\xe8\xff.