![]() |
|
|
![]()
|
|
| Superklug |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
Многие программы (например ICQ), почти моментально реагируют на отключение от интернета. Как это реализовано?
Очень надеюсь на вашу помощь... |
|||
|
||||
| Sonic7272 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 18.9.2009 Репутация: 3 Всего: 3 |
Как именно в ICQ не знаю.
Но можно, например, иногда проверять соединение по нужному протоколу с внешним адресом... Трудно посоветовать что либо конкретное, не зная твоих задумок или планов в проекте. Распиши, что именно требуется?! |
|||
|
||||
| Superklug |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
В моей программе через TCppWebBrowser открыт сайт. Программа переодически обновляет страницу и обрабатывает данные...
Очевидно проверку запускать по таймеру. А как проверить? Какой-нибудь там ping? Я просто в этом совсем не разбираюсь( |
|||
|
||||
| Sonic7272 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 18.9.2009 Репутация: 3 Всего: 3 |
Ну если не хочешь лезть в дебри сокета, то возьми компонент NMHTTP во вкладке FastNet(BCB6).
В Host вбей адрес сервера, например www.mail.ru В Port вбей 80(например) А код
соединение и ошибки проверяй в Events - OnConnect, OnFailure... В компоненте, который ты используешь, наверняка есть свои события... Посмотри внимательно. Это сообщение отредактировал(а) Sonic7272 - 20.9.2009, 15:49 |
|||
|
||||
| Superklug |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
Примерно так?
|
|||
|
||||
| Sonic7272 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 18.9.2009 Репутация: 3 Всего: 3 |
Мысль верная.
Смотри, если соединение на порт 80 произошло успешно, то первое что сработает это событие OnConnect. Если порт на сервере не отвечает, то действие компонента(NMHTTP1->Open) как бы зависает, примерно на 20 секунд, а потом возвращает ошибку. Но если тебе 20 секунд дороги, то запусти таймер с задержкой 1-2-5 сек., и если за это время не произошло событие OnConnect, то действуй дальше по своим соображениям. Если хочешь проверять порт сервера часто, и вообще после коннекта, обязательно делай NMHTTP1->Close(). Можешь так же воспользоваться try{}; catch(...){}; Это сообщение отредактировал(а) Sonic7272 - 20.9.2009, 16:49 |
|||
|
||||
| Superklug |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
У этого компонента нет метода Open. А еще не понял зачем выполнять Close.
Если проверять соединение по таймеру, то как часто это делать? На сколько я понимаю каждая такая проверка - это трафик и дополнительная нагрузка на процессор... |
|||
|
||||
| Sonic7272 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 18.9.2009 Репутация: 3 Всего: 3 |
||||
|
||||
| Superklug |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
Sonic7272, Спасибо тебе большое!
|
|||
|
||||
| Superklug |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
Последний вопрос... Чем отличаются TIdHTTP и TNMHTTP. Что лучше использовать?
|
|||
|
||||
| Sonic7272 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 18.9.2009 Репутация: 3 Всего: 3 |
Не работал с ним.
Судя по той задаче, что требуется от xxHTTP в твоей программе, я бы не стал терять время на разбор полетов... Но если будешь расширять применение его функции, то придется погуглить... |
|||
|
||||
| _Dimon_ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 25.6.2007 Где: Украина Репутация: 1 Всего: 1 |
А почему бы не заюзать TIdIcmpClient с вкладки Indy Clients?
Там есть 2 важных свойства: PacketSize - по умолчанию 1024 (я у себя сменил на 32) ReceiveTimeout - по умолчанию 5000 (ставь скок хочеш |
|||
|
||||
| SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 9 Всего: 23 |
_Dimon_, твоё решение подходит если не может быть ситуации, что хост жив, а HTTP сервак - нет,
так что, для уверености, нужно использовать предложенные раньше способы. |
|||
|
||||
| _Dimon_ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 25.6.2007 Где: Украина Репутация: 1 Всего: 1 |
Согласен, и такое бывает. Только что посмотрел еще раз на этот компонент (TIdIcmpClient) и увидел параметр Port. Он у меня всегда = 0. Никто мне не подскажет нафига он вообще нужен, а то справку я так и не понял |
|||
|
||||
| Superklug |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
||||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 32 Всего: 158 |
возможны(и вполне вероятны) два "плохих" варианта:
набросал проверялку:
|
|||
|
||||
| Superklug |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
dumb, ваш пример я так понимаю на WinAPI? Он исключает "плохие варианты"?
|
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Чего? |
|||
|
||||
| Superklug |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
||||
|
||||
| Alca |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Добавлено через 2 минуты и 47 секунд
|
||||||
|
|||||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |