Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2012, 20:06   #1
-=ATT=-
 
Регистрация: 30.10.2011
Сообщений: 8
По умолчанию Доступность IP адреса

Всем доброго дня!
Никак не получается сделать програмку в 3 строки на проверку IP адреса на живучесть, т.е. проверяем IP 22.22.22.22 и если он не доступен (к примеру по 80 порту), то showmessage('offline'), а если доступен, то showmessage('online').
Пробовал делать вот так:
Код:
Try
 IdHTTP1.Get( 'http://yandex.ru' );
 connected := True;
Except
 connected := False;
End;
Если адрес доступен, то все норм, а если нет, то ждать приходится около 20 секунт, а хотелось бы 1 сек.

Последний раз редактировалось -=ATT=-; 11.12.2012 в 20:33.
-=ATT=- вне форума Ответить с цитированием
Старый 11.12.2012, 20:33   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

IdHTTP1.Get( 'http://93.158.134.11' );
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 11.12.2012, 20:35   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ты правильные адреса вводишь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.12.2012, 20:39   #4
-=ATT=-
 
Регистрация: 30.10.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Slym Посмотреть сообщение
IdHTTP1.Get( 'http://93.158.134.11' );
да, с этим разобрался, осталось только это:
Цитата:
Если адрес доступен, то все норм, а если нет, то ждать приходится около 20 секунт, а хотелось бы 1 сек.
-=ATT=- вне форума Ответить с цитированием
Старый 11.12.2012, 21:42   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а хотелось бы 1 сек.
А посмотри обладает ли idHTTP свойством TimeOut. Если да поставь в него 1000 (это секунда).
Если нет используй другой компонент для пинга
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.12.2012, 22:20   #6
-=ATT=-
 
Регистрация: 30.10.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А посмотри обладает ли idHTTP свойством TimeOut. Если да поставь в него 1000 (это секунда).
Если нет используй другой компонент для пинга
Есть, я выставляю
Код:
 IdHTTP1.ReadTimeout := 200;
но все равно висит по 15-20 секунд
-=ATT=- вне форума Ответить с цитированием
Старый 11.12.2012, 22:49   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

200 это маловато... Я не помню точно но там кажись какой-то порог снизу есть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.12.2012, 23:11   #8
-=ATT=-
 
Регистрация: 30.10.2011
Сообщений: 8
По умолчанию

уже и Connect добавил, все равно висит блин...
Код:
IdHTTP1.ReadTimeout := 2000; 
IdHTTP1.ConnectTimeout := 2000;
-=ATT=- вне форума Ответить с цитированием
Старый 12.12.2012, 01:27   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

IP нужно через ICMP пропускать.
на HTTP адреса нужно HEAD запрос посылать

оно куда быстрее будет.

Последний раз редактировалось Человек_Борща; 12.12.2012 в 01:44.
Человек_Борща вне форума Ответить с цитированием
Старый 12.12.2012, 08:01   #10
-=ATT=-
 
Регистрация: 30.10.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
IP нужно через ICMP пропускать.
на HTTP адреса нужно HEAD запрос посылать

оно куда быстрее будет.
Прислушался совету, вроде все работает, только результат выдает все время 'online' , даже если подставляю неработающий IP
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
   try
   IdIcmpClient1.ReceiveTimeout:=300;
   IdIcmpClient1.Host:=('1.1.1.1');
   IdIcmpClient1.Port:=80;
   IdIcmpClient1.Ping;
   showMessage('online');
   except
   showMessage('offline');

end;

end;
-=ATT=- вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Известны фамилии,адреса и телефоны 25-ти человек,Найти фамилии и адреса людей,чей телефон начинается с цифры 3. Расмотреть два слу salomon93 Паскаль, Turbo Pascal, PascalABC.NET 11 01.12.2011 23:36
Доступность порта _-Re@l-_ Работа с сетью в Delphi 8 13.05.2011 00:43
Доступность сайта phphel Общие вопросы Delphi 14 15.09.2010 08:29
idhttp.get - проверка на доступность.. Dima_D Работа с сетью в Delphi 2 17.08.2010 10:11
Доступность кнопки. *stRong* Помощь студентам 2 04.06.2010 03:30