Программирование >>  Руководство по созданию web приложений 

1 ... 105 106 107 [ 108 ] 109 110 111 ... 141


Функция GetServerVariable

Прототип функции GetServerVariable определен в структуре EXTENSION CONT-. oniicaHHoir нами ранее:

BOOL ;.! ... * :- -.: V - г .-: - .....

LPSTR - : . : .. . .. - -0. l.Ddwf.ize):

Через параметр hConn Вы должны передать этой функции идентификатор канала, полученный ; . поле CoririlD структуры EXTENSIOH COIITROL BL()(;K.

Параметр IpszVariableName должен содержать указатель на строку имени переменной, содержимое которой ; . . Это содержимое будет

записано функцией в ; ; . . адрес которого передается через параметр IpvBuffer, а размер - через параметр IpdwSize.

Пиже перечислены возможные значения строк, передаваемых через параметр : - -Vari . .- - --Ш.

среды ,4UTH T¥PE содержит тип идентификации, который применяется сервером.

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

ф СГИТЕПрЕЕНаТН

Количество байт данных, которые расгпирение ISAPI должно получить от браузера. I CONTENTJYPE

Тип данных, присланных браузером.

Ф PATPIKFO

Путь к виртуальному каталогу, в котором находится библиотека DLL расгпи-рения ISAPI.

PATHTR.AMSUTED

Физический путь к библиотеке DLL расгпирения ISAPI. 1 QUERY STRING

Строка параметров, указанная в форме или теге ссылки <А>. Эта строка ука-.навапсач после адреса URL библиотеки DLL расгпирения ISAPI вслед за разделительным символом

REMOTE ADDR

Адрес IP узла, на котором . браузер посетителя.

ф REIIOTEHOST

Доменное имя узла, на котором работает браузер посетителя. Если эта информация недоступна (например, для узла не определен доменный адрес), то вместо доменного имени указывается адрес IP, как в переменной REMOTE ADDR.

ф BEiuTEUSER

Имя пользователя, которое применяет браузер для аутентификации.



f UNI

Имя до обработки фильтром ISAPI, которое iiiiiMft>icT брау-

для аутентификации.

. LHETH0O

Метод доступа, который для передачи данных от браузера сер-

веру Web.

SCF

В эту . записывается путь к wniaiv каталогу и имя библио-

теки DLL . ISAPI. Анализируя эту переменную,

ISAPI определит путь к своему файлу.

: SERVER NAME

имя сервера или адрес IP сервера Web, если доменное имя

недоступно или не определено.

Имя и версия протокола, который применяется запроса к

расгпирению ISAPI.

1 SERVER PORT

Номер порта, на котором браузер посылает запросы серверу Web.

Если обработка запроса выполняется через защищенный порт, в этой строке записано значение 1, а если через - . 0.

1 SERVCP S0FTM4Pt

Название и версия программного обеспечения Web. Версия следует

после и отделяется символом />,

# ALL HTTP

Строка, закрытая двоичным нулем, в которую записаны значения всех переменных, имеющих отнощение к протоколу HTTP. Это, например, такие пе-

как НТТР АССЕРТ, HTTP CONNECTION, . : - и т. д.

Извлекать содержимое отдельных Ваща программа должна са-

мостоятельно. Нри этом учесть, что названия переменных отделены от

их символом двоеточия >, а поля разделены символом

перевода строки.

Обратите внимание, что названия этих строк почти совпадают е переменных среды, создаваемых для программ совпадение все же

не полное.

В случае . заверщения функция . возвращает зна-

чение TRUE, а при возникновении ощибки - FALSE. Код ошибки можно

определить с помощью функции вызвав се сразу после функции

коды ощибок для функции GetServerVarlable : в таб-

лице 7-2.



Таблица 7-2. Коды Кол ошибки

для функции

OiiHCiiiine

ERROR NO DATA

111.ц,Н1И имя переменной, передаваемой через параметр liJiiVar iablB laiiii

. BiLiu.n>a значение параметра HeOFF - Буфер, адрес которого указан с помощью параметра

1р>;Ву*аг слишком мал. Необходимый размер буфера записывается по адресу, который был аерагдап функции через параметр .

Буфер, адрес которого указан с аана,)1Д,а1 параметра IpvBuffer, слишком мал. В результате данные прочитаны частично, причем [Siaiifp буфера, необходимый для чтения всех данных, Hcai.aacaTCU

Данные не получены

Ниже мы показываем пример использования функции GetServerVariable для ползщения содержимого переменной vlimivk ,ALL HTTP в буфер azTeipBuf.

CHAR DWORD .

= 4096;

idtiSiza),

szTempBuf); Функция ReatlClient

Прототип функции ReadClient записан в структуры . : .:

ROL PLODK и выглядит следующим образом:

BOOL (WNAPI * ReadClient) (HCONN PonnlD. lP/OIP IpvBuffer, LPOaOBP IpdwSize);

Через параметр hConn этой функции надо передать идентификатор канала, полученный через поле ConnlD ai pa агары EXTENSIONCONTROLBLQCK.

Функция ReadClient читает данные в буфер, адрес которого передается через параметр IpvBuffer, а размер - через параметр IpdwSize. В случае успеха функция возвращает значение TRUE, а при ошибке - FALSE. Код ошиб-

ки можно посредством функции

Работа с функцией Re adClient имеет особенности.

Когда расширение ISAPI получает управление, через структуру типа EXTEN-передается адрес предварительно прочитанного блока данных, полученного от браузера посетителя. Как Вы знаете, адрес и размер этого блока данных - - в полях IpbPata и cbAvailable структу-

ры - - . - .

Однако размер предварительно прочитанных данных не может превышать 48 кб. Если все данные не поместились в буфер предварительного чтения, их необходимо дочитать функцией Re adClient. При этом следует . следующий алгоритм.

Прежде всего следует сравнить размер предварительно считанных данных с полным размером данных, которые нужно считать (этот размер передается в поле cbTotalBytes структуры BLwCKl.



1 ... 105 106 107 [ 108 ] 109 110 111 ... 141

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика