русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Функция ServerSupportFunction


Дата добавления: 2013-12-23; просмотров: 1131; Нарушение авторских прав


Функция WriteCilent

Посылка данных расширением ISAPI

Вместо того чтобы записывать выходные данные в стандартный поток вывода STDOUT, как это делает программа CGI, расширение ISAPI пользуется для посылки данных функциями WriteCilent и ServerSupportFunction, указатели на которые передаются расширению ISAPI через структуру типа EXTENSION_CONTROL_BLOCK.

Прототип функции WriteClient, взятый из определения структуры EXTENSION_CONTROL_BLOCK, приведен ниже:

BOOL (WINAPI * WriteClient)(HCONN ConnID, LPVOID Buffer, LPDWORD lpdwBytes, DWORD dwReserved);

Через параметр hConn функции WriteClient передается идентификатор канала, полученный через поле ConnID структуры EXTENSION_CONTROL_BLOCK.

Функция WriteClient посылает удаленному пользователю данные из буфера Buffer, причем размер передаваемого блока данных должен быть записан в переменную типа DWORD, адрес которой передается через параметр lpdwBytes. Параметр dwReserved зарезервирован для дальнейших расширений возможностей функции.

В случае успеха функция возвращает значение TRUE, а при ошибке - значение FALSE. Код ошибки можно получить при помощи функции GetLastError.

Заметим, что после посылки данных функция WriteClient записывает в переменную, адрес которой был ей передан через параметр lpdwBytes, количество успешно переданных байт данных. В отличие от функции ReadClient, функция WriteClient посылает данные за один прием, поэтому нет необходимости вызывать ее в цикле. Если же эта функция смогла передать только часть данных, то это означает, что произошла ошибка.

Прототип функции ServerSupportFunction, определенный в структуре типа EXTENSION_CONTROL_BLOCK, приведен ниже:

BOOL (WINAPI * ServerSupportFunction)(HCONN hConn, DWORD dwHSERRequest, LPVOID lpvBuffer, LPDWORD lpdwSize, LPDWORD lpdwDataType);

Через параметр hConn функции ServerSupportFunction передается идентификатор канала, полученный через поле ConnID структуры EXTENSION_CONTROL_BLOCK.



С помощью параметра dwHSERRequest вы можете задать один из нескольких кодов запроса, определяющих операцию, выполняемую этой функцией.

Через параметр lpvBuffer передается размер буфера, который используется при выполнении операции. Размер этого буфера должен быть записан в переменной типа DWORD, адрес которой передается через параметр lpdwSize. После выполнения операции передачи данных в эту переменную будет записан размер успешно переданного блока данных.

Параметр lpdwDataType используется для указания дополнительной строки заголовка или дополнительных данных, которые будут добавлены к заголовку, передаваемому удаленному пользователю. Если для параметра lpdwDataType указать значение NULL (что допустимо), к заголовку будут добавлены символы конца строки “\r\n”.

Какие операции можно выполнять при помощи функции ServerSupportFunction?

Ниже мы привели список возможных значений параметра dwHSERRequest, определяющего код выполняемой операции:

· HSE_REQ_SEND_RESPONSE_HEADER

Эта операция предназначена для посылки удаленному пользователю стандартного заголовка HTTP. При необходимости добавления других заголовков следует воспользоваться параметром lpdwDataType. В качестве дополнительного заголовка вы можете указать любую строку, закрытую символами конца строки “\r\n” и двоичным нулем.

Если ваше расширение ISAPI динамически формирует документ HTML и посылает его пользователю, то ей не нужно вызывать функцию WriteClient. Все необходимые для этого действия можно сделать при помощи одной только функции ServerSupportFunction. Ниже мы показали фрагмент кода, в котором эта функция используется для посылки документа HTML, подготовленного заранее в буфере szBuff:

CHAR szBuff[4096];wsprintf(szBuff, "Content-Type: text/html\r\n\r\n" "<HTML><HEAD><TITLE>Simple ISAPI Extension</TITLE></HEAD>\n" "<BODY BGCOLOR=#FFFFFF><H1>Hello from ISAPI Extension!</H1>\n"); strcat(szBuff, "<H1>Заголовок документа</H1>"); strcat(szBuff, "<HR>");strcat(szBuff, "</BODY></HTML>"); lpECB->ServerSupportFunction(lpECB->ConnID, HSE_REQ_SEND_RESPONSE_HEADER, NULL, NULL, (LPDWORD)szBuff);

Заметим, однако, что функция ServerSupportFunction не позволяет посылать двоичные данные. Для посылки двоичных данных вы обязательно должны использовать функцию WriteClient.

· HSE_REQ_SEND_URL

Используя операцию HSE_REQ_SEND_URL, расширение ISAPI может послать удаленному пользователю данные, заданные адресом URL, как будто бы эти данные были запрошены непосредственно пользователем по этому адресу URL. Такая возможность удобна для посылки либо динамически созданных данных, либо для посылки предварительно подготовленных данных.

Адрес URL должен быть указан в виде текстовой строки, закрытой двоичным нулем, через параметр lpvBuffer. Размер строки вы должны указать в параметре lpdwSize. Что же касается параметра lpdwDataType, то при выполнении данной операции этот параметр игнорируется.

· HSE_REQ_SEND_URL_REDIRECT_RESP

Посылка сообщения с номером 302 (URL Redirect). Адрес URL указывается аналогично тому, как это делается при выполнении операции HSE_REQ_SEND_URL.

· HSE_REQ_MAP_URL_TO_PATH

Преобразование логического адреса URL в физический. Адрес логического пути передается через параметр lpvBuffer. По этому же адресу записывается результат преобразования. Размер буфера при вызове функции задается как обычно с помощью параметра lpdwSize. После преобразования переменная типа DWORD, адрес которой указан параметром lpdwSize, будет содержать длину строки результата преобразования.

· HSE_REQ_DONE_WITH_SESSION

В том случае, когда расширение ISAPI оставляет канал открытым для выполнения длительной обработки данных, с помощью этой команды можно сообщить серверу о завершении обработки. Все параметры функции ServerSupportFunction при указании этой команды игнорируются.

 

46 поиск информации в сети интернет

Сеть Интернет растет очень быстрыми темпами, поэтому найти нужную информацию среди сотен миллиардов Web-страниц и сотен миллионов файлов становится все сложнее. Для поиска информации используются специальные поисковые системы, которые содержат постоянно обновляемую информацию о местонахождении Web-страниц и файлов на сотнях миллионов серверов Интернета.

Поисковые системы содержат тематически сгруппированную информацию об информационных ресурсах Всемирной паутины в базах данных. Специальные программы-роботы периодически "обходят" Web-серверы Интернета, читают все встречающиеся документы, выделяют в них ключевые слова и заносят в базу данных Интернет-адреса документов.

Большинство поисковых систем разрешают автору Web-сайта самому внести информацию в базу данных, заполнив регистрационную анкету. В процессе заполнения анкеты разработчик сайта вносит адрес сайта, его название, краткое описание содержания сайта, а также ключевые слова, по которым легче всего будет найти сайт.

Поиск по ключевым словам. Поиск документа в базе данных поисковой системы осуществляется с помощью введения запросов в поле поиска.

Запрос должен содержать одно или несколько ключевых слов, которые являются главными для этого документа. Например, для поиска самих систем поиска в Интернете можно в поле поиска ввести ключевые слова "российская система поиска информации Интернет" (рис. 6.21).

 
Рис. 6.21. Поиск по ключевым словам в системе Google

 


Через некоторое время после отправки запроса поисковая система вернет список Интернет-адресов документов, в которых были найдены заданные ключевые слова. Для просмотра этого документа в браузере достаточно активизировать указывающую на него ссылку (рис. 6.22).

 
Рис. 6.22. Результат поиска по ключевым словам

 


Если ключевые слова были выбраны неудачно, то список адресов документов может быть слишком большим (может содержать десятки и даже сотни тысяч ссылок). Для того чтобы уменьшить список, можно в поле поиска ввести дополнительные ключевые слова или воспользоваться каталогом поисковой системы.

Одной из наиболее полных и мощных поисковых систем является Google (www.google.ru), в базе данных которой хранятся 8 миллиардов Web-страниц и каждый месяц программы-роботы заносят в нее 5 миллионов новых страниц. В Рунете (российской части Интернета) обширные базы данных, содержащие по 200 миллионов документов, имеют поисковые системы Яndех (www.yandex.ru) и Rambler (www.rambler.ru).

Поиск в иерархической системе каталогов. В базе данных поисковой системы Web-сайты группируются в иерархические тематические каталоги, которые являются аналогами тематического каталога в библиотеке.

Тематические разделы верхнего уровня, например: Интернет, Компьютеры, Наука и образование и т. д., содержат вложенные каталоги. Например, каталог Интернет может содержать подкаталоги Поиск, Почта и др. (рис. 6.23).

 
Рис. 6.23. Тематические каталоги поисковой системы Апорт

 


Поиск информации в каталоге сводится к выбору определенного каталога, после чего пользователю будет представлен список ссылок на Интернет-адреса наиболее посещаемых и содержательных Web-сайтов. Каждая ссылка обычно аннотирована, т. е. содержит короткий комментарий к содержанию документа.

Наиболее полный многоуровневый иерархический тематический каталог русскоязычных Интернет-ресурсов имеет поисковая система Апорт (www.aport.ru). Каталог содержит подробную аннотацию содержания Web-сайтов и указание на их географическое положение.

Поиск файлов. Для поиска файлов на серверах файловых архивов существуют специализированные поисковые системы, в том числе поисковая система FileSearch (www.filesearch.ru). Для поиска файла необходимо ввести имя файла в поле поиска, и поисковая система выдаст Интернет-адреса серверов файловых архивов, на которых хранится файл с заданным именем.

Поиск информации в русскоязычной части Интернета с помощью наиболее поисковых систем: Google, Rambler, Апорт, Япс1ех и файловой поисковой системы Research можно производить с использованием интегрированной поисковой системы Gogle.ru (рис. 6.24). Для этого достаточно ввести ключевые слова в строку поиска, с помощью переключателей установить тип необходимой информации и щелкнуть по кнопке с названием поисковой системы Gogle.ru (рис. 6.24). Для этого достаточно ввести ключевые слова в строку поиска, с помощью переключателей установить тип необходимой информации и щелкнуть по кнопке с названием поисковой системы.

 
Рис. 6.24. Интегрированная поисковая система Gogle.ru

 




<== предыдущая лекция | следующая лекция ==>
Функция ReadClient | Поисковые серверы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.