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

UptoLike

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

- 42 -
isListenSocket := NetSocket.CreateListenSocket(handle,
WM_LISTENSOCKETEVENT, 80);
Процедура ReadCommandMsg считывает в цикле принятое от клиента со-
общение:
procedure TWbServe.ReadCommandMsg;
var IsCommand: String; IsMessage: String;
liCmdbength: Integer; liMsgLength: Integer;
begin
{ Получить запрос от клиента с проверкой oшибок }
liMsgLength := recv(isConnectionSocket, ReceiveBuffer, 8192, 0);
if (liMsgLength = SOCKET_ERROR) and
(WSAGetLastError <> WSAEWOOLDBLOCK) then
ShowMessage(NetSocket.SocketError) { выдать сообщение об ошибке }
else
begin
{ Закрыть принятую строку запроса нулем }
ReceiveBuffer[liMsgLength] := Char(0);
{ Получить первую строку принятого запроса }
if NetSocket.GetLine(TempBuffer, ReceiveBuffer) then
begin
{ Выдать принятую строку на экран для пользователя }
mleReceived.Lines.Add(StrPas(TempBuffer));
{ Есть еще ли что-нибудь в буфере захвата? }
if (Length(isHoldBuffer) > 0) then
{ Если да, добавьте его перед новой строкой }
IsMessage := isHoldBuffer + StrPas(TempBuffer)
else
IsMessage := StrPas(TempBuffer);
{ Очистить буфер захвата }
isHoldBuffer := '';
{ Найти символ пробела для определения конца команды }
liCmdLength := Pos(' ', IsMessage);
if (liCmdLength = 0) then
begin
{ Если нет символа пробела, это не командная строка заголовка }
liCmdLength := Length(IsMessage);
IsCommand := IsMessage;
IsMessage := '';
end
else
begin
{ Отделить команду от остальной части запроса }
IsCommand := Copy(IsMessage, 1, (liCmdLength - 1));
IsMessage := Copy(IsMessage, (liCmdLength + 1), Length(IsMessage));
isListenSocket := NetSocket.CreateListenSocket(handle,
                 WM_LISTENSOCKETEVENT, 80);

  Процедура ReadCommandMsg считывает в цикле принятое от клиента со-
общение:

procedure TWbServe.ReadCommandMsg;
var IsCommand: String; IsMessage: String;
      liCmdbength: Integer; liMsgLength: Integer;
begin
{ Получить запрос от клиента с проверкой oшибок }
  liMsgLength := recv(isConnectionSocket, ReceiveBuffer, 8192, 0);
  if (liMsgLength = SOCKET_ERROR) and
                       (WSAGetLastError <> WSAEWOOLDBLOCK) then
    ShowMessage(NetSocket.SocketError) { выдать сообщение об ошибке }
 else
 begin
{ Закрыть принятую строку запроса нулем }
   ReceiveBuffer[liMsgLength] := Char(0);
{ Получить первую строку принятого запроса }
  if NetSocket.GetLine(TempBuffer, ReceiveBuffer) then
  begin
{ Выдать принятую строку на экран для пользователя }
   mleReceived.Lines.Add(StrPas(TempBuffer));
{ Есть еще ли что-нибудь в буфере захвата? }
   if (Length(isHoldBuffer) > 0) then
{ Если да, добавьте его перед новой строкой }
  IsMessage := isHoldBuffer + StrPas(TempBuffer)
  else
   IsMessage := StrPas(TempBuffer);
{ Очистить буфер захвата }
   isHoldBuffer := '';
{ Найти символ пробела для определения конца команды }
   liCmdLength := Pos(' ', IsMessage);
   if (liCmdLength = 0) then
   begin
{ Если нет символа пробела, это не командная строка заголовка }
    liCmdLength := Length(IsMessage);
    IsCommand := IsMessage;
    IsMessage := '';
   end
   else
   begin
{ Отделить команду от остальной части запроса }
    IsCommand := Copy(IsMessage, 1, (liCmdLength - 1));
    IsMessage := Copy(IsMessage, (liCmdLength + 1), Length(IsMessage));

                                        - 42 -