Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];

Вниз

Мне необходимо в цикле опросить по сокетам несколько машин   Найти похожие ветки 

 
Sadya   (2003-11-11 17:48) [0]

Здравствуйте, мастера !

Смысл в том, что у меня есть список машин, которым я должен подать команду и получить от них некоторые файлы. Ситуация когда у меня одна машина, все работает как надо, но когда машин несколько, сразу встает вопрос: как остановить цикл, пока не обработается одна машинка, чтобы только после этого перейти к следующей ?

Код приблизительно такой :
for i:=0 to hosts.Count-1 do
begin
HostConnect.Host:=hosts[i];
ConnectType:="GetFileNames";
SaveFromHost:=ExtractFilePath(Application.ExeName)+"hosts\"+hosts[i]+"\fileslist.tsc";
HostConnect.Active:=True;
end;


 
Digitman   (2003-11-11 18:07) [1]

какой тип у идент-ра HostConnect ?


 
Sadya   (2003-11-11 18:15) [2]

Прошу прощения:
HostConnect: TClientSocket;

В смысл в том, что пока не закончился цикл не обрабатываются события OnConnect и Read


 
Михаил   (2003-11-12 10:24) [3]

Я обычно делаю проще:
вставляю таймер который например читает файл со списком адресов - 1-ый пошел, читать_дальше_файл = false, далее переменная для выдачи результатов, если ошибка, то в лог, если сделала то тоже в лог, далее как выполнилась функция, то читать_дальше_файл = true, а Таймер ожидает true и шпарит дальше.


 
Digitman   (2003-11-12 10:53) [4]


> В смысл в том, что пока не закончился цикл не обрабатываются
> события OnConnect и Read


и что ?


 
Sadya   (2003-11-12 13:08) [5]

Т.е. с циклом мне никак не справится, функции типа WaitForDisconect нету и задача решаема только через таймер


 
Digitman   (2003-11-12 13:48) [6]


> Т.е. с циклом мне никак не справится, функции типа WaitForDisconect
> нету и задача решаема только через таймер


глупости.

берешь один-единственный компонент TClientSocket,

задаешь ему параметры очередного сервера и просто выполняешь Open(), засим успокаиваешься и занимаешься прочими делами (1)

возникает событие OnConnect() - производишь нужный инф.обмен с сервером

возникает событие OnDisconnect() или OnError() - шлешь самому себе некое сообщение А (PostMessage) и успокаиваешься

получаешь сообщение А, и если в списке есть еще серверы, с которыми нужно произвести инф.обмен, здесь же, в его обработчике сообщения А выполняешь (1), иначе - конец, выход


 
Sadya   (2003-11-12 13:57) [7]

Спасибо за совет, попробую. О результатах напишу


 
Sadya   (2003-11-12 17:51) [8]

Господа, массив формирую, один раз все пересылается, а потом опять тишина, повторное подключение пытаюсь организовать прямо в Disconnect:

procedure TMainForm.HostConnectDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
SetLength(Connections,Length(Connections)-1);
if Length(Connections)>0 then
begin
HostConnect.Host:=Connections[Length(Connections)-1][0];
HostConnect.Open;
end;
end;

*********************
Connections - это массив, где хранится список подключений
Интересно, что я делаю не так ?


 
Digitman   (2003-11-12 18:21) [9]


> Интересно, что я делаю не так ?


делаешь ты "не так" вот что :


> повторное подключение пытаюсь организовать прямо в Disconnect


хотя я русским языком тебе сказал (цитирую) :


> возникает событие OnDisconnect() или OnError() - шлешь самому
> себе некое сообщение А (PostMessage) и успокаиваешься


 
Sadya   (2003-11-12 18:41) [10]

Точно, я был невнимательным, теперь вроде все пучком



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
6-37829
Bill
2003-11-11 03:42
2004.01.13
Cannot allocate socket.


3-37570
Alex_x
2003-12-17 13:45
2004.01.13
DBtree


1-37738
Alex-chainik
2003-12-30 12:26
2004.01.13
Создана ли форма


14-37851
Думкин
2003-12-23 07:55
2004.01.13
С днем рождения! 23 декабря.


3-37564
Vemer
2003-12-15 12:08
2004.01.13
Запуск ХП дя формирования





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский