Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2010, 07:36   #1
redline85
 
Регистрация: 22.02.2010
Сообщений: 5
По умолчанию sockeты и циклы

Поиск юзал, кое-чего нашел, но мне не помогло. Излагаю
Есть сервис, который ставиться на удаленной машине, открывает порт и ждет команды.
Есть клиент, с кнопкой Сенд... по нажатию на которую сервису подается команда залезть ко мне в папку и скопировать содержимое. Когда это команда посылается одному сервису, то все работает. Но стоит мне перебрать адреса в цикле, от править им запрос, то выполняется процедура копирования тока у последнего стоящего в цикле. Если вставить пустой цикл, for от 1 до 100000 то команду копирования выполняет... но тока не более 3х адресатов... Предполагаю, что возможно нужно использовать потоки... или нужно пересылать ответ от сервиса на другой порт?
Клиент

Код:
procedure TForm1.XiButton22Click(Sender: TObject);
var flag:integer;
begin

for i:=0 to memo4.Lines.Count-1 do
                  begin
                // ClientSocket1.close;
                 //ClientSocket1.Port := 6498 ;
 edit7.Text:=memo4.Lines[i];
       Memo7.Lines.Add('connect to '+memo4.Lines[i]) ;
         clientSocket1.Address:=memo4.Lines[i];
            ClientSocket1.Active:=true;
          for j := 0 to 10000000 do
   begin
           ClientSocket1.Socket.SendText('copy')  ;//без цикла не копирует
    Application.ProcessMessages ;

    end;
              Memo7.Lines.Add('send to '+memo4.Lines[i])  ;
                   ClientSocket1.Active:=false;

                                end   ;

end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
memo7.Lines.Add('Результат '+Socket.ReceiveText);
end;
---------
Сервер
Код:
procedure TService1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
  var sor,des,res:string;
  begin
  des:='c:\soft\';
   sor:='\\192.168.1.9\c$\guest\' ;

   res:=Socket.ReceiveText;
 
if  res='copy' then
                                                 begin

 if FullDirectoryCopy(sor,des,false,true)then
  serverSocket1.Socket.Connections[0].SendText('>>Успешно скопированно на '+GetLocalIP);
//////////////////////////////отправляем результат о  успешном копировании...
                                                 end;
  ...
...
закрадывается сомнение, что ответ об успешном копировании может "забивать" сокет...
Задумка такая, чтоб при отправке всем сообщения Копи, компы, на которых установленны сервисы, сами выкопирывали содержимое нужной дириктории...

Последний раз редактировалось Stilet; 15.03.2010 в 08:30.
redline85 вне форума Ответить с цитированием
Старый 15.03.2010, 08:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
for j := 0 to 10000000 do
Это для чего ты такое поставил то?
Убери.
Цитата:
// ClientSocket1.close;
А заремил то чего? после передачи команды нужно же отключаться.
Да и вообще. Посылать команды лучше в событии OnConnect, когда связь гарантированно установленна, а ты сразу пытаешся это сделать когда не извесно подключился али нет.

Рекомендую посылать серверу по протоколу UDP через TIdUDP, дабы не ждать ответа и подключения.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.03.2010, 09:34   #3
redline85
 
Регистрация: 22.02.2010
Сообщений: 5
По умолчанию

// ClientSocket1.close; // ClientSocket1.Active:=false;
-а разве эти две комманды не идентичны?
-TIdUDP- спасибо за подсказку, сча обмозгую...
redline85 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Циклы - вложенны циклы? tigga Microsoft Office Excel 5 19.02.2010 23:36
циклы? serj-07 Помощь студентам 7 29.01.2010 00:25
Циклы Mizantrop Помощь студентам 0 04.11.2009 18:32
циклы Mizantrop Помощь студентам 0 04.11.2009 18:06