Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Зависание idtcp client [D6, WinXP]


olevacho_ ©   (2005-11-01 10:53:00) 

Есть такой код

begin
 idTCPClient1.Port:=StrToInt(Edit1.Text);
idTCPClient1.Host:=edit2.text ;
try
 idTCPClient1.Connect;
 idTCPClient1.WriteLn('Signal');
   idTCPClient1.DisconnectSocket;
 except
 idTCPClient1.DisconnectSocket;
  showmessage('connection not established');
idTCPClient1.Port:=1026;
idTCPClient1.Host:='192.168.1.9' ;
 idTCPClient1.Connect;
 idTCPClient1.WriteLn('Signal');
   idTCPClient1.DisconnectSocket;
 end;
end;

Все работает ОК до тех пор пока включен комп на который отправляется запрос. Код работает даже если на другой стороне не запущен IndyServer. Но если комп выключен то прога основательно зависает. Не помогает даже код защиты except. Как сделать чтобы в данной ситуации правильно работало?


Eraser   (2005-11-01 13:54:00) [1]


> olevacho_ ©   (01.11.05 10:53)

У TidTCPClient есть такое свойство ConnectTimeout.


Digitman   (2005-11-01 13:29:00) [2]


> Reindeer Moss Eater ©   (01.11.05 10:57) [1]


не-а ... "неправильно" работает ..


> olevacho_ ©   (01.11.05 10:53)  


try
idTCPClient1.Connect; //ну, предположим ..
//ЗДЕСЬ должен быть try !!!!
idTCPClient1.WriteLn('Signal'); //сюда доехали ? значит соединение установлено ! И значит любые исключения, здесь возникшие, НЕ связаны с установлением коннекта !
  idTCPClient1.DisconnectSocket;
except
...
 showmessage('connection not established'); // c какого вдруг перепугу "соединение не установлено" ?!
....
end;
end;


Tor   (2005-11-01 11:13:00) [3]

Если это у тебя клиент, то положи на фотрму антифриз, может поможет. Лично у меня клиент создается в отдельном патоке и работает не зависимо от VCL-го. Сделай таймер, вроде на процедуре Connect есть такое.


Reindeer Moss Eater   (2005-11-01 10:57:00) [4]

>Как сделать чтобы в данной ситуации правильно работало?


Оно и так "правильно" работает.


Наверх

Титульная страница Поиск, карта сайта Написать письмо