Показать сообщение отдельно
  #1  
Старый 14.04.2022, 16:52
Аватар для Alloc
Alloc Alloc вне форума
Начинающий
 
Регистрация: 17.09.2014
Сообщения: 104
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию ServerSocket и ClientSocket (передача файлов)

Всем привет!

Есть приложение Клиент-Сервер. Задача формировать отчеты на стороне клиента и далее отправка этого файла на сервер.

Я отправляю клиенту определенное сообщение, клиент принимает и отправляет сформированный отчет.

Код:
procedure TForm1.M1Click(Sender: TObject);
var
  MSG: string;
  SelectedItem, i: integer;
begin
  SelectedItem := StrToInt(ListView1.Items[ListView1.ItemIndex].SubItems[1]);

  if Form4.ShowModal = mrOK then
  begin
    MSG:= Form4.Edit1.Text;
    MSG:= StringReplace(MSG, '.', ' ', [rfReplaceAll, rfIgnoreCase]);

    for i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
    begin
      if ServerSocket1.Socket.Connections[i].Handle = SelectedItem then
      begin
        ServerSocket1.Socket.Connections[i].SendText('#report#=' + MSG);
        Break;
      end;
    end;
  end;

end;

По одиночке - все работает. Не могу придумать, что делать в случае если надо отправить эту команду для всех по очереди, при этом ждать пока скачается предыдущий файл...


как пример... но это не работает так как нужно..

Код:
procedure FileReceiveThread.Execute;
var
  MSG: string;
  i: integer;
  Count: integer;
begin
  if Form4.ShowModal = mrOK then
  begin
    MSG:= Form4.Edit1.Text;
    MSG:= StringReplace(MSG, '.', ' ', [rfReplaceAll, rfIgnoreCase]);

    Count:= Form1.ServerSocket1.Socket.ActiveConnections;

    for i := 0 to Count do
    begin
      if Form1.Gauge1.Progress = 0 then
      begin
        Form1.ServerSocket1.Socket.Connections[i].SendText('#report#=' + MSG);
      end else
      begin
        Sleep(5000);
      end;
    end;

  end;
end;

буду благодарен за помощь и идеи
Ответить с цитированием