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

UptoLike

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

- 46 -
протокол HTTP 1.0 клиенту, проверяя существование запрашиваемого файла
и выдавая соответствующие ответы (код 200 или 404 при существующем /
несуществующем файле соответственно):
procedure TWbServe.SendFullHeader;
begin
if FileExists(isFileName) then { Запрашиваемый файл существует ? }
begin
{ Открыть файл и отправить полный заголовок сообщения, передавая
функцию FIleHeader в качестве дополнительного параметра строки
сообщения процедуре SendFullMsg }
OpenSendFile;
SendFullMsg(isConnectionSocket, 200, HTTP_NOOP,
UWM_SOCKETEVENT, FileHeader);
CloseConnection; { Закрыть соединение }
end
else
begin { Файл не существуетпослать клиенту сообщение об этом }
SendFullMsg(isConnectionSocket, 404, HTTP_NOOP,
UWM_SOCKETEVENT, isFileName);
CloseConnection; { Закрыть соединение }
end;
end; { конец SendFullHeader }
При обработке команды GET нижеприведенная процедура SendFullObject
отправляет клиенту не только данные о запрашиваемом файле, но и сам файл
(вместо CloseConnection вызывается ProcessDataSend):
procedure TWbServe.SendFullObject;
begin
if FileExists(isFileName) then { Запрашиваемый файл существует ? }
begin
{ Открыть его и отправить полное сообщение заголовка, причем
передать функцию FileHeader в качестве дополнительного параметра
строки сообщения процедуре SendFullMsg }
OpenSendFile;
SendFullMsg(isConnectionSocket, 200, HTTP_NOOP,
UWM_SOCKETEVENT, FileHeader);
ProcessDataSend; { Отправить файл }
end
else
begin
{ Файла нет, отправить клиенту полное сообщение об этом }
SendFullMsg(isConnectionSocket, 404, HTTP_NOOP,
UWM_SOCKETEVENT, isFileName);
протокол HTTP 1.0 клиенту, проверяя существование запрашиваемого файла
и выдавая соответствующие ответы (код 200 или 404 при существующем /
несуществующем файле соответственно):

procedure TWbServe.SendFullHeader;
begin
 if FileExists(isFileName) then { Запрашиваемый файл существует ? }
 begin
{ Открыть файл и отправить полный заголовок сообщения, передавая
 функцию FIleHeader в качестве дополнительного параметра строки
 сообщения процедуре SendFullMsg }
 OpenSendFile;
 SendFullMsg(isConnectionSocket, 200, HTTP_NOOP,
                 UWM_SOCKETEVENT, FileHeader);
 CloseConnection; { Закрыть соединение }
 end
 else
 begin { Файл не существует – послать клиенту сообщение об этом }
 SendFullMsg(isConnectionSocket, 404, HTTP_NOOP,
                  UWM_SOCKETEVENT, isFileName);
 CloseConnection; { Закрыть соединение }
 end;
end; { конец SendFullHeader }

  При обработке команды GET нижеприведенная процедура SendFullObject
отправляет клиенту не только данные о запрашиваемом файле, но и сам файл
(вместо CloseConnection вызывается ProcessDataSend):

procedure TWbServe.SendFullObject;
begin
 if FileExists(isFileName) then { Запрашиваемый файл существует ? }
 begin
{ Открыть его и отправить полное сообщение заголовка, причем
  передать функцию FileHeader в качестве дополнительного параметра
  строки сообщения процедуре SendFullMsg }
 OpenSendFile;
 SendFullMsg(isConnectionSocket, 200, HTTP_NOOP,
                  UWM_SOCKETEVENT, FileHeader);
 ProcessDataSend; { Отправить файл }
 end
 else
 begin
{ Файла нет, отправить клиенту полное сообщение об этом }
 SendFullMsg(isConnectionSocket, 404, HTTP_NOOP,
                 UWM_SOCKETEVENT, isFileName);

                                     - 46 -