Пинг, TProcess и TLTCPComponent как отследить разрыв связи

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Пинг, TProcess и TLTCPComponent как отследить разрыв связи

Сообщение Boris3B » 16.01.2009 11:45:57

Пишу программу (Lazarus 0.9.26 beta FPC 2.2.2, под XUbuntu) для работы с контроллером по TCP/IP. Использую компонент TLTCPComponent из INet.
Проблема: когда отключаю кабель от сетевого интерфейса (карты) не происходит ни OnDisconnect, ни OnError. Свойства Connected и Active остаются TRUE.
Хотел использовать TProcess и по таймеру пинговать контроллер, но он останавливается и около минуты ни каких ответов. А пока ответа от пинга не пришёл - не происходит даже OnTimer таймера. Читал ман на пинг. Использовал и -W и -i и еще всякого - ни чего не помогает. Прога висит. У меня случился ТУПИК! ПОМОГИТЕ добрым советом!...
Boris3B
новенький
 
Сообщения: 11
Зарегистрирован: 17.11.2008 18:34:10

Re: Пинг, TProcess и TLTCPComponent как отследить разрыв связи

Сообщение yser » 16.01.2009 13:19:14

есть 3-х звенка, была похожая проблема, решил путем посылки раз в 30 сек (настраиваемо) так называемых keepalive пакетов (т.е. пустой пакет в нем только признак что он для поддержки связи).
раньше бывало если связь разрывается а у сервера/клиента не возникало соответствуещего события, то теперь в таких случаях определяется разрыв с максимальным опозданием в 30 сек. т.к. при попытке посылки любого пакета (в данном случае keepalive) в потерянное соединение стало срабатывает событие.
yser
новенький
 
Сообщения: 29
Зарегистрирован: 06.02.2008 11:27:40

Re: Пинг, TProcess и TLTCPComponent как отследить разрыв связи

Сообщение Boris3B » 16.01.2009 15:05:35

Спасибо за совет, но я выкрутился другим способом. Пакет от контроллера приходит раз в 0.3 сек. Я поставил таймер на сработку 0.4 сек. и ввел в проге переменную ILive: boolean. По по приходу пакета делаю ILive := TRUE, а по таймеру проверяю if (not ILive) then "процедура дисконнекта-коннекта" и в далее в любом случае ILive := FALSE. Вот и всё.
Boris3B
новенький
 
Сообщения: 11
Зарегистрирован: 17.11.2008 18:34:10


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru