|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
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; буду благодарен за помощь и идеи |