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

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

Не возникает Disconnect


Cardinalius ©   (2007-09-16 10:47:00) 

Приветствую, Мастера!
Возникла проблема... При физическом отключении сети (выдернули штекер RJ-45) не возникает событие OnDisconnect на TClientSocket, хотя если присвоить Active := falseсервера или клиента, то данное событие возникает. Мне же необходимо получить данное событие при физическом отключении. Может кто-нибудь знает как?


Сергей М.   (2007-09-17 20:30:00) [1]


> Cardinalius ©   (17.09.07 20:20) [10]


Весьма важен момент: ClientType = ?


Cardinalius   (2007-09-17 20:20:00) [2]

> [9] Сергей М. ©   (17.09.07 18:55)
>
> Чукча не читатель ?)
>
> см. [3]


Сорри :) Сейчас буду разбираться... Спасибо еще раз!


Сергей М.   (2007-09-17 18:55:00) [3]


> как мне отследить момент отключения?


Чукча не читатель ?)

см. [3]


DVM   (2007-09-17 17:13:00) [4]


> Неужели пинговать по таймеру? Или есть более правильные
> методы?

Не пинговать, а обмениваться пакетами. Это и есть правильное решение.


Cardinalius   (2007-09-17 17:11:00) [5]

Ясно. Сапсибо всем!
Тогда как мне отследить момент отключения? Неужели пинговать по таймеру? Или есть более правильные методы?


Сергей М.   (2007-09-16 12:45:00) [6]


> Cardinalius


Касаемо конкретно компонентов TServer/ClientSocket следует понимать, что события On[Client]Disconnect возникают лишь не иначе как при штатном разрыве виртуальногосоединения по инициативе партнера по этому соединению.

Разрыв же физическогосоединения относится к аварийной ситуации, а не к штатной.


Anatoly Podgoretsky   (2007-09-16 12:18:00) [7]

Это не Disconnect, а Error - поэтому оно возникнуть не может.


Сергей М.   (2007-09-16 11:47:00) [8]


> нужно, чтобы при обратном включении возникало событие OnConnect


И не жди даже, не дождешься ты его.

OnConnect - одно из следствий выполнения метода Open.

Нет Open - не будет и OnConnect.


Сергей М.   (2007-09-16 11:44:00) [9]


> Ну и чтобы остановить всякие таймеры и прочую лабуду


"всякие таймеры и прочая лабуда" прекрасно останавливаются и по исключению и по событию OnError, возникающим при попытке выполнения Send-методов в момент физического разрыва канала.


Cardinalius   (2007-09-16 11:41:00) [10]

Ну и чтобы остановить всякие таймеры и прочую лабуду :)
Фактически нужно, чтобы при обратном включении возникало событие OnConnect и файл передавался дальше :)


Сергей М.   (2007-09-16 10:52:00) [11]


> необходимо получить данное событие при физическом отключении


Зачем тебе это событие понадобилось ?


Наверх

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