Разработка клиента НТТР для создания локальной копии веб-ресурсов
А.Б. Гусева Донецкий национальный технический университет
Доклад на II Международную научную конференцию студентов, аспирантов и молодых ученых. 15-17 мая 2006г.
Не секрет, что в наше время наиболее быстрым и легким способом получения нужной информации является обращение к Веб-ресурсам. Эффективность работы программных компонентов и сети оказывает существенное влияние на восприятие пользователем информации в WWW. Функционирование WWW зависит от наличия стандартного способа для взаимодействия Веб-компонентов. Протокол передачи гипертекста (Hypertext Transfer Protocol, HTTP[4]) представляет собой наиболее распространенный способ передачи ресурсов в WWW. НТТР определяет формат сообщения, которым обмениваются Веб-компоненты, такие как Веб-клиент и Веб-сервер. В большинстве случаев клиент НТТР запрашивает у сервера НТТР для передачи файлы с гипертекстом (НТМL-файлы) или файлы с гипермедиа (видео, изображение и т.п.).
Обмен информацией между ними происходит по следующей схеме:
- Веб-клиент НТТР устанавливает соединение на транспортном уровне с портом НТТР сервера.
- Клиент посылает запрос серверу НТТР.
- После получения клиентом ответа от сервера, как клиент, так и сервер могут закрыть соединение.
В данной статье описывается разработка программы Веб-клиента, которая запрашивает у Веб-сервера нужные ресурсы. Кроме того, программой будет предусмотрено обращение к новым ресурсам через гиперссылки, которые указанны в загружаемых файлах.
Структура программы Веб-клиента НТТР состоит из следующих основных блоков:
Модуль протокола НТТР;
Модуль загрузки файлов;
Модуль анализа текста НТМL;
Модуль анализа параметров программы;
Модуль формирования результатов работы ;
Интерфейс пользователя.
Работа веб-клиента на основе НТТР-протокола может быть реализована двумя способами:
- с помощью функций библиотеки WinSock;
- с помощью функций библиотеки WinInet.
При использовании первого способа реализации веб-клиента модуль протокола НТТР будет служить для организации взаимодействия между протоколами НТТР и ТСР[3]. Исходя из того, что все функции библиотеки WinSock реализованы с помощью ТСР-протокола, заголовок НТТР-запроса или ответа на запрос должен находиться в поле данных пакета ТСР.
При использовании второго способа реализации веб-клиента данный модуль является лишним, т.к. он уже реализован в работе функций WinInet.
Модуль загрузки файлов должен содержать ряд функций осуществляющих загрузку веб-ресурсов. Следует отметить, что реализация этого модуля является независимой от выбора подключаемой библиотеки.
Загруженный НТМL-файл в модуле анализа текста НТМL подлежит анализу, т.е. выделению из переданного файла гиперссылок на другие ресурсы.
Параметры программы являются исходными данными, указанными пользователем. В параметрах пользователь должен указать глубину поиска веб-ресурсов через гиперссылки и адрес веб-сервера. К дополнительным параметрам можно отнести, например, способ получения необходимых ресурсов:
непосредственное обращение к серверу по введенному пользователем адресу;
получение данных через proxy-сервер.
Параметры программы сохраняются до момента закрытия сеанса между клиентом и сервером.
Результ работы - загруженные ресурсы (файлы с гипермедиа и гипертекстом). Модуль формирования результатов обрабатывает загруженные ресурсы.
Приложение имеет достаточно простой интерфейс:
окно для настройки параметров запуска загрузки ресурсов (появляется после выбора соответствующей опции меню);
окно для отображения дерева загруженных ресурсов;
окно для просмотра файлов.
Взаимосвязь между всеми блоками структуры осуществляется по следующему принципу:
- Пользователь с помощью интерфейса программы указывает параметры загрузки ресурсов.
- Загруженный файл из модуля загрузки файлов передается в модуль анализа полученного гипертекста.
- Модуль анализа гипертекста выделяет все ссылки на другие ресурсы. Далее, в зависимости от заданных параметров программы, данный модуль либо передает полученные гиперссылки в модуль загрузки ресурсов, либо передает ресурс пользователю в качестве результатов работы программы.
- В случае внезапного обрыва связи между веб-клиентом и веб-сервером выполняет дозагрузку ресурсов. При этом результаты программы передаются в модуль загрузки ресурсов, в котором они и обрабатываются.
- Получив нужный ресурс, пользователь может загрузить новые ресурсы, на которые указаны ссылки в данном файле. В этом случае программа снова обращается к модулю анализа гипертекста и следует алгоритму, указанному в третьем пункте.
Данная реализация веб-клиента на основе протокола НТТР имеет некоторые преимущества. Во-первых, пользователь имеет возможность загрузить не просто веб-страничку, а, при желании, и весь сайт. Во-вторых, в случае обрыва соединения с сервером, пользователь сможет повторить попытку дозагрузки веб-ресурсов.
Литература.
- 1. Б. Кришнамурти, Дж. Рексфорд Web-протоколы. Теория и практика. – М.: ЗАО «Издательство БИНОМ», 2002 г. – 592 с.
- 2. Джамса К., Коуп К. Программирование для Internet в среде Windows/Перевод с англ. ¬– СПб: Питер, 1996г.– 688с.
- 3. Postel, J. (ed.), " TRANSMISSION CONTROL PROTOCOL", RFC 0793, September 1981.
- 4. Berners-Lee, T., Fielding, R. and H. Frystyk, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
|