Разработка клиента НТТР для создания локальной копии веб-ресурсов

А.Б. Гусева
Донецкий национальный технический университет

Доклад на II Международную научную конференцию студентов, аспирантов и молодых ученых.
15-17 мая 2006г.

Не секрет, что в наше время наиболее быстрым и легким способом получения нужной информации является обращение к Веб-ресурсам. Эффективность работы программных компонентов и сети оказывает существенное влияние на восприятие пользователем информации в WWW. Функционирование WWW зависит от наличия стандартного способа для взаимодействия Веб-компонентов. Протокол передачи гипертекста (Hypertext Transfer Protocol, HTTP[4]) представляет собой наиболее распространенный способ передачи ресурсов в WWW. НТТР определяет формат сообщения, которым обмениваются Веб-компоненты, такие как Веб-клиент и Веб-сервер. В большинстве случаев клиент НТТР запрашивает у сервера НТТР для передачи файлы с гипертекстом (НТМL-файлы) или файлы с гипермедиа (видео, изображение и т.п.). Обмен информацией между ними происходит по следующей схеме:

  1. Веб-клиент НТТР устанавливает соединение на транспортном уровне с портом НТТР сервера.
  2. Клиент посылает запрос серверу НТТР.
  3. После получения клиентом ответа от сервера, как клиент, так и сервер могут закрыть соединение.


В данной статье описывается разработка программы Веб-клиента, которая запрашивает у Веб-сервера нужные ресурсы. Кроме того, программой будет предусмотрено обращение к новым ресурсам через гиперссылки, которые указанны в загружаемых файлах.
Структура программы Веб-клиента НТТР состоит из следующих основных блоков:

  • Модуль протокола НТТР;
  • Модуль загрузки файлов;
  • Модуль анализа текста НТМL;
  • Модуль анализа параметров программы;
  • Модуль формирования результатов работы ;
  • Интерфейс пользователя. Работа веб-клиента на основе НТТР-протокола может быть реализована двумя способами:
    1. с помощью функций библиотеки WinSock;
    2. с помощью функций библиотеки WinInet.

    При использовании первого способа реализации веб-клиента модуль протокола НТТР будет служить для организации взаимодействия между протоколами НТТР и ТСР[3]. Исходя из того, что все функции библиотеки WinSock реализованы с помощью ТСР-протокола, заголовок НТТР-запроса или ответа на запрос должен находиться в поле данных пакета ТСР.
    При использовании второго способа реализации веб-клиента данный модуль является лишним, т.к. он уже реализован в работе функций WinInet.
    Модуль загрузки файлов должен содержать ряд функций осуществляющих загрузку веб-ресурсов. Следует отметить, что реализация этого модуля является независимой от выбора подключаемой библиотеки.
    Загруженный НТМL-файл в модуле анализа текста НТМL подлежит анализу, т.е. выделению из переданного файла гиперссылок на другие ресурсы.
    Параметры программы являются исходными данными, указанными пользователем. В параметрах пользователь должен указать глубину поиска веб-ресурсов через гиперссылки и адрес веб-сервера. К дополнительным параметрам можно отнести, например, способ получения необходимых ресурсов:

  • непосредственное обращение к серверу по введенному пользователем адресу;
  • получение данных через proxy-сервер.


    Параметры программы сохраняются до момента закрытия сеанса между клиентом и сервером. Результ работы - загруженные ресурсы (файлы с гипермедиа и гипертекстом). Модуль формирования результатов обрабатывает загруженные ресурсы.

    Приложение имеет достаточно простой интерфейс:

  • окно для настройки параметров запуска загрузки ресурсов (появляется после выбора соответствующей опции меню);
  • окно для отображения дерева загруженных ресурсов;
  • окно для просмотра файлов.
    Взаимосвязь между всеми блоками структуры осуществляется по следующему принципу:
    1. Пользователь с помощью интерфейса программы указывает параметры загрузки ресурсов.
    2. Загруженный файл из модуля загрузки файлов передается в модуль анализа полученного гипертекста.
    3. Модуль анализа гипертекста выделяет все ссылки на другие ресурсы. Далее, в зависимости от заданных параметров программы, данный модуль либо передает полученные гиперссылки в модуль загрузки ресурсов, либо передает ресурс пользователю в качестве результатов работы программы.
    4. В случае внезапного обрыва связи между веб-клиентом и веб-сервером выполняет дозагрузку ресурсов. При этом результаты программы передаются в модуль загрузки ресурсов, в котором они и обрабатываются.
    5. Получив нужный ресурс, пользователь может загрузить новые ресурсы, на которые указаны ссылки в данном файле. В этом случае программа снова обращается к модулю анализа гипертекста и следует алгоритму, указанному в третьем пункте.

    Данная реализация веб-клиента на основе протокола НТТР имеет некоторые преимущества. Во-первых, пользователь имеет возможность загрузить не просто веб-страничку, а, при желании, и весь сайт. Во-вторых, в случае обрыва соединения с сервером, пользователь сможет повторить попытку дозагрузки веб-ресурсов.

    Литература.

    1. 1. Б. Кришнамурти, Дж. Рексфорд Web-протоколы. Теория и практика. – М.: ЗАО «Издательство БИНОМ», 2002 г. – 592 с.
    2. 2. Джамса К., Коуп К. Программирование для Internet в среде Windows/Перевод с англ. ¬– СПб: Питер, 1996г.– 688с.
    3. 3. Postel, J. (ed.), " TRANSMISSION CONTROL PROTOCOL", RFC 0793, September 1981.
    4. 4. Berners-Lee, T., Fielding, R. and H. Frystyk, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.

  • вверх