Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Работа с IdCmdTCPServer


Автор: ASGDeveloper 28.3.2008, 17:16
Есть обработчик команды у IdCmdTCPServer:

Код

procedure TObSvc.CoreServerCommandHandlers3Command(ASender: TIdCommand);
begin
  {
     stat - запрос статуса
       параметры: нет параметров
  }

  ASender.Reply.SetReply(200, 'SERVER STATUS: OK');
  ASender.Response.Add('DATAPROCESSES ' + IntToStr(Processes.Count));
end;


И есть небольшая программа для тестирования сервера:
Код

procedure TForm1.Button3Click(Sender: TObject);
begin
  try
    CoreClient.SendCmd('STAT', [200, 400]);
    Memo1.Lines.Add(CoreClient.LastCmdResult.Code + ' ' + CoreClient.LastCmdResult.Text.Text);
  except
    On E: Exception do Memo1.Lines.Add('STAT ERROR - "' + E.Message + '"');
  end;
end;


Код подключений между клиентом и сервером я опускаю и перехожу сразу к проблеме. Проблема заключается в том, что время от времени при выполнение команды ответ и отклик меняются местами, хотя по логам все ок.

Лог клиента:
Код

Sent 28.03.2008 17:07:17: STAT<EOL>
Recv 28.03.2008 17:07:17: 200 SERVER STATUS: OK<EOL>
Recv 28.03.2008 17:07:17: DATAPROCESSES 0<EOL>
Recv 28.03.2008 17:07:17: .<EOL>


Лог сервера:
Код

192.168.0.12:3715 Recv 28.03.2008 17:06:32: STAT<EOL>
192.168.0.12:3715 Sent 28.03.2008 17:06:32: 200 SERVER STATUS: OK<EOL>
192.168.0.12:3715 Sent 28.03.2008 17:06:32: DATAPROCESSES 0<EOL>
192.168.0.12:3715 Sent 28.03.2008 17:06:32: .<EOL>


При этом клиент иногда (последовательности я не заметил) выдает сообщение "Reply Code is not valid: DAT". Вероятно DAT - это кусок от DATAPROCESSES. Получается отклик и ответ меняются местами, при этом они меняются уже где-то в клиенте, ибо лог содержит нормальные данные.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)