|
Вопрос # 2 500/ вопрос открыт / |
|
Здравствуйте!
Можно сделать так, что бы программа отслеживала подключение к интернету - и если оно отсутствует или прервалось выдавала ошибку? Спасибо!
 |
Вопрос задал: Хитманчан (статус: Посетитель)
Вопрос отправлен: 10 марта 2009, 13:43
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Nasgool
Здравствуйте, Хитманчан!
Если ваша программа работает с интернетом (а это скорее всего так) и использует TIdTCPServer или TIdTCPClient, то любое обращении к сети, ка-то Connect, Disconnect, Send, Read нужно заключать в try ... except ... end и обрабатывать исключения EIdException.
"Исключения Indy только слегка отличаются от исключений VCL, все исключения Indy наследуются от EIdException. Если вы желаете обрабатывать исключения Indy отдельно от исключений VCL, то это можно сделать, как в следующем примере.
Для использования EIdException вы должны добавить IdException в uses."
Цитата из книги "Глубины Indy"
Приложение: Переключить в обычный режим- try
-
- Client.Connect;
-
- try
-
- // Perform read/write here
-
- finally
-
- Client.Disconnect;
-
- end;
-
- except
-
- on E: EIdException do
-
- begin
-
- ShowMessage('Communication Exception: ' + E.Message);
-
- end
-
- else
-
- begin
-
- ShowMessage('VCL Exception: ' + E.Message);
-
- end;
-
- end;
-
 |
Ответ отправил: Nasgool (статус: 2-ой класс)
Время отправки: 11 марта 2009, 02:42
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 6; последнее сообщение — 11 марта 2009, 18:00; участников в обсуждении: 2.
|
Вадим К (статус: Академик), 10 марта 2009, 14:45 [#1]:
В общем - никак.
А так по отдельности - можно. Если это через модем (rasdial), то это отслеживаемо. Если же это по сети - сложнее. Наиболее надёжный способ - время от времени пинговать несколько сайтов. Если перестали откликаться - значит всё, упало
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Хитманчан (статус: Посетитель), 10 марта 2009, 16:36 [#2]:
Вадим К, не подскажите как это сделать (время от времени пинговать несколько сайтов)? Спасибо!
|
|
Вадим К (статус: Академик), 10 марта 2009, 22:52 [#3]:
Если установлена библиотека Indy (на новых версиях, начиная с 6 она есть обычно), то там можно найти компонент с именем IdICMP (вроде так). Ему только адрес надо передать, а он всё сделает.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Хитманчан (статус: Посетитель), 10 марта 2009, 23:35 [#4]:
Вадим К, спасибо! Только для меня это глухой лес... может знаете, где почитать об этом можно по подробнее... ато я гугл поюзал - ничего не нашел толком... спасибо!
|
|
Вадим К (статус: Академик), 11 марта 2009, 02:42 [#5]:
А какой гугл Вы используете? я лично google.com.ua, мож от этого зависит? так как прям на первой странице уже кусочек кода был виден. вот он
icmp: TIdIcmpClient;
.....
icmp.Host:='194.87.0.50';
icmp.Ping();
showmessage('Время до хоста: '+inttostr(icmp.ReplyStatus.MsRoundTripTime)+'ms');
Да, точное название компонента - TIdIcmpClient
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Хитманчан (статус: Посетитель), 11 марта 2009, 18:00 [#6]:
Nasgool, Вадим К, спасибо! Буду пробовать)
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|