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

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

Слишком много коннектов... [D6, Win95/98, WinXP]


DNT ©   (2003-11-12 11:33:00) 

Программа использует ClientSocket для соединения с сервером.
Если прога не подключена к серверу, то она с интервалом в 5 секунд пытается подконнектится.
Если очень много попыток коннекта, то win перестает обрабатывать другие запросы. И из инета ничего не грузится.
Видимо я не правильно обрабатываю ошибки ClientSocket:

....
ErrorCode:=0;
ClientSocket.Socket.Disconnect(Socket.Handle);
...

или так пробовал
...
ErrorCode:=0;
ClientSocket.Close;
...

А коннект делаю таким способом:
if ClientSocket.Socket.Connected=false then
begin
try
ClientSocket.open;
except
form1.Caption :="что делать?!";
end;
end;

Подскажите, что не так.
Tnx ;)


Digitman   (2003-11-12 12:26:00) [1]

и как это все с таймером связано ?

те самые упомянутые тобой 5 секунд огромное значение имеют !

не вижу ничего, что хоть сколь-либо проясняло ситуацию с обработкой событий таймера


DNT   (2003-11-12 12:19:00) [2]

Я написал код коннекта и обработки ошибок.


Digitman   (2003-11-12 12:12:00) [3]


> DNT


детский сад) ... "помогает", "не помогает")

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


DNT   (2003-11-12 12:01:00) [4]

Я же говорю, сначала это помогает а затем - нет.


Digitman   (2003-11-12 11:50:00) [5]


> Краем ухо слашал, что нужно дисконнект по другому сделать,
> но не знаю как.


именно так :

ErrorCode:=0;
Socket.Close;


DNT   (2003-11-12 11:42:00) [6]

Значит ошибка возникала отчего-то другово или где-то в другом месте.
Т.е. сначала ErrorCode 10061, а потом 10055 и инет уже не работает.
Краем ухо слашал, что нужно дисконнект по другому сделать, но не знаю как.


Digitman   (2003-11-12 11:37:00) [7]


> или так пробовал
> ...
> ErrorCode:=0;
> ClientSocket.Close;
> ...


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


Наверх

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