Сетевые технологии. Баканов В.М. - 47 стр.

UptoLike

Составители: 

- 47 -
CloseConnection; { Закрыть соединение }
end;
end; { конец SendFullObject }
При отправлении клиентом команды POST или другой не поддерживае-
мой сервером команды необходимо ответить соответствующим сообщением
для информирования клиента об этом; для этого служит процедура SendCon-
textMsg:
procedure TWbServe.SendContextMsg;
begin
{ Какую команду отправил клинт ? }
case iiHTTPStatus of
HTTP_NOOP: ; { HOOP, GET и HEAD - ничего делать не надо, команды поддер-
живаются сервером }
HTTP_GET : ;
HTTP_HEAD : ;
{ POST и неизвестная команда - отправить ответы 401 и 400 соответственно }
HTTP_POST: SendFullMsgfisConnectionSocket, 401, HTTP_NOOP,
UWM_SOCKETEVENT, '') ;
HTTP_UNKWN: SendFullMsg(isConnectionSocket, 400, HTTP_NOOP,
UWM_SOCKETEVENT, '') ;
end;
end; { конец SendContextMsg }
Прежде проверки наличия и возможности открытия любых запрашивае-
мых файлов необходимо единообразным образом преобразовать их имена,
заменяя прямые слеши/ на обратные\’ (предлагаемая процедура Convert-
FileNameToDos упрощена и не обрабатываетдлинныеимена):
procedure TWbServe.ConvertFileNameToDos;
var liSlashPos: Integer;
begin
liSlashPos :=Pos(‘/’, isFileName); { Найти первый символ ‘/’ }
{ Выполнять цикл столько раз, сколько имеется символов ‘/’ }
while (liSlashPos > 0) do
begin
{ Скопировать имя файла, заменяя символ ‘/’ символом ‘\’ }
isFileName := Copy(isFileName, 1, (liSlashPos - 1)) + ‘\’ + Copy(isFileName,
(liSlashPos + 1), Length(isFileName));
liSlashPos := Pos(‘/’, isFileName);
end;
end; { конец ConvertFileNameToDos }
 CloseConnection; { Закрыть соединение }
 end;
end; { конец SendFullObject }

    При отправлении клиентом команды POST или другой не поддерживае-
мой сервером команды необходимо ответить соответствующим сообщением
для информирования клиента об этом; для этого служит процедура SendCon-
textMsg:

procedure TWbServe.SendContextMsg;
begin
{ Какую команду отправил клинт ? }
 case iiHTTPStatus of
 HTTP_NOOP: ; { HOOP, GET и HEAD - ничего делать не надо, команды поддер-
                 живаются сервером }
 HTTP_GET : ;
 HTTP_HEAD : ;
{ POST и неизвестная команда - отправить ответы 401 и 400 соответственно }
 HTTP_POST:      SendFullMsgfisConnectionSocket, 401, HTTP_NOOP,
                 UWM_SOCKETEVENT, '') ;
 HTTP_UNKWN: SendFullMsg(isConnectionSocket, 400, HTTP_NOOP,
                 UWM_SOCKETEVENT, '') ;
 end;
end; { конец SendContextMsg }

    Прежде проверки наличия и возможности открытия любых запрашивае-
мых файлов необходимо единообразным образом преобразовать их имена,
заменяя прямые слеши ‘/’ на обратные ‘\’ (предлагаемая процедура Convert-
FileNameToDos упрощена и не обрабатывает ‘длинные’ имена):

procedure TWbServe.ConvertFileNameToDos;
var liSlashPos: Integer;
begin
liSlashPos :=Pos(‘/’, isFileName); { Найти первый символ ‘/’ }
{ Выполнять цикл столько раз, сколько имеется символов ‘/’ }
 while (liSlashPos > 0) do
 begin
{ Скопировать имя файла, заменяя символ ‘/’ символом ‘\’ }
 isFileName := Copy(isFileName, 1, (liSlashPos - 1)) + ‘\’ + Copy(isFileName,
                      (liSlashPos + 1), Length(isFileName));
 liSlashPos := Pos(‘/’, isFileName);
 end;
end; { конец ConvertFileNameToDos }



                                          - 47 -