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

UptoLike

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

- 43 -
end;
{ Передать команду и параметр процедуре CheckCommandMsg }
CheckCommandMsg(IsCommand, IsMessage);
end;
{ Любые дополнительные строки не анализируются в этом
приложении, поэтому просто вывести их на экран }
while NetSocket.GetLine(TempBuffer, ReceiveBuffer) do
begin
mleReceived.Lines.Add(StrPas(TempBuffer));
end;
{ Осталось ли что-нибудь? Если да, поместить его в буфер захвата }
if (Length(StrPas(TempBuffer)) > 0) then
begin
if (Length(isHoldBuffer) > 0) then
isHoldBuffer := isHoldBuffer + StrPas(TempBuffer)
else
isHoldBuffer := StrPas (TempBuffer) ,
end;
end;
end; { конец ReadCommandMsg }
После приема команды и ее аргументов необходимо определить, есть ли в
списке маркер HTTP 1.0 (иначе имеем HTTP 0.9). Процедура CheckCom-
mandMsg проверяет, какая команда получена сервером:
procedure TWbServe.CheckCommandMsg(asCommand, asArguments: String);
var IbCmdFound: Boolean; liSpacePos: Integer;
begin
{ Инициализировать флаг обнаруженной команды значением FALSE }
IbCmdFound := FALSE;
{ Найден ли индикатор HTTP 1.0 ? }
if (Pos(‘НТТР/1.0', asArguments) > 0) then
begin
{ Да, отметить этот запрос как полный (HTTP 1.0) }
iblsFullRequest := TRUE;
{ Теперь удалить индикатор HTTP 1.0 из имени файла)
liSpacePos := Pos(' ', asArguments);
if (liSpacePos > 0) then
isFileName := Copy(asArguments, 1, (liSpacePos — 1));
end
else
begin
{ Нет индикатора HTTP 1.0, поэтому необходимо
обрабатывать этот запрос как HTTP 0.9 }
iblsFullRequest := FALSE;
isFileName := asArguments;
   end;
{ Передать команду и параметр процедуре CheckCommandMsg }
   CheckCommandMsg(IsCommand, IsMessage);
   end;
{ Любые дополнительные строки не анализируются в этом
  приложении, поэтому просто вывести их на экран }
  while NetSocket.GetLine(TempBuffer, ReceiveBuffer) do
  begin
   mleReceived.Lines.Add(StrPas(TempBuffer));
  end;
{ Осталось ли что-нибудь? Если да, поместить его в буфер захвата }
  if (Length(StrPas(TempBuffer)) > 0) then
  begin
   if (Length(isHoldBuffer) > 0) then
   isHoldBuffer := isHoldBuffer + StrPas(TempBuffer)
  else
   isHoldBuffer := StrPas (TempBuffer) ,
  end;
 end;
end; { конец ReadCommandMsg }

  После приема команды и ее аргументов необходимо определить, есть ли в
списке маркер HTTP 1.0 (иначе имеем HTTP 0.9). Процедура CheckCom-
mandMsg проверяет, какая команда получена сервером:

procedure TWbServe.CheckCommandMsg(asCommand, asArguments: String);
var IbCmdFound: Boolean; liSpacePos: Integer;
begin
{ Инициализировать флаг обнаруженной команды значением FALSE }
 IbCmdFound := FALSE;
{ Найден ли индикатор HTTP 1.0 ? }
 if (Pos(‘НТТР/1.0', asArguments) > 0) then
 begin
{ Да, отметить этот запрос как полный (HTTP 1.0) }
 iblsFullRequest := TRUE;
{ Теперь удалить индикатор HTTP 1.0 из имени файла)
 liSpacePos := Pos(' ', asArguments);
 if (liSpacePos > 0) then
  isFileName := Copy(asArguments, 1, (liSpacePos — 1));
 end
 else
 begin
{ Нет индикатора HTTP 1.0, поэтому необходимо
  обрабатывать этот запрос как HTTP 0.9 }
 iblsFullRequest := FALSE;
 isFileName := asArguments;

                                      - 43 -