Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.24;
Скачать: CL | DM;

Вниз

Пинг, TIdIcmpClient, except.   Найти похожие ветки 

 
vegarulez ©   (2007-05-27 07:00) [0]

Доброго времени суток мастерам!
У меня такая проблемка, подскажите как её можно решить.
У меня есть приложение, в котором допустим пингуется ya.ru каждые 30 секунд, для проверки, есть инет или нет, для этого использую TIdIcmpClient. И всё бы ничего но столкнулся с такой проблемкой, когда вообще нет соединения с инетом (т.е. нет сети, или отрублен модем), то выходит except сокет еррор, так вот чтобы избавится от этой месаги, вставил блок except. Но проблема в том что, когда вообще нет соединения, то при пинге, приложение виснет на 1-2 секунды, и потом только переходит на except.

Вопрос, как избавится от завсиания?
ИМХО: Сделать эту обработку в отдельном потоке? Ну чтобы приложение не висло...
Подскажите как это сделать... (не работал с потоками)

И сам except - криво сделан, подскажите как правильнее...

// тут пока без таймера- на кнопку забиндил, для отладки

procedure TfrmPing.btnPingClick(Sender: TObject);
var
 i: integer;
begin
 ping_en:=0;
 ping_dis:=0;
 ICMP.OnReply := ICMPReply;
 ICMP.ReceiveTimeout := 1000;
 btnPing.Enabled := False;
 try
 ICMP.Host := edtHost.Text;
 While i <> 5 do
begin
 try
    Begin
    ICMP.Ping;
    Application.ProcessMessages;
    End;
  except on E:Exception do
  i:=4;
 end;
i:=i+1;
end;
finally btnPing.Enabled := True;
end;
end;


 
vegarulez ©   (2007-05-27 07:10) [1]

// сверху немного неправильный код...

procedure TfrmPing.btnPingClick(Sender: TObject);
var
 i: integer;
begin
 i:=0;
 ping_en:=0;
 ping_dis:=0;
 ICMP.OnReply := ICMPReply;
 ICMP.ReceiveTimeout := 1000;
 btnPing.Enabled := False;
 try
 ICMP.Host := edtHost.Text;
 While i < 4 do
begin
 try
    Begin
    ICMP.Ping;
    Application.ProcessMessages;
    End;
  except on E:Exception do
  i:=4;
 end;
i:=i+1;
end;
finally btnPing.Enabled := True;
end;
end;


 
Anatoly Podgoretsky ©   (2007-05-27 10:17) [2]

> vegarulez  (27.05.2007 07:10:01)  [1]

while не нужен, лучше for, а except лучше так except exit end;


 
vegarulez ©   (2007-05-29 21:16) [3]

Анатолий, я ещё пару вопросов про Инди хотел у вас спросить, как у "крестного отца" индейцев...  )
У вас есть е мыл или ася?..
мой емыл vegarulez[СОБАКА]ngs.ru...
напишите ваши контакты, как с вами можно связаться...
Жду письма ;)


 
Anatoly Podgoretsky ©   (2007-05-29 21:20) [4]

> vegarulez  (29.05.2007 21:16:03)  [3]

Все есть и все не доступно.
А индейцем я смог пробыть только 7 дней,
лучший индеец - мертвый индеец.


 
vegarulez ©   (2007-05-29 21:40) [5]

:(
но всё же...
хочется поговорить с Гуру...



Страницы: 1 вся ветка

Текущий архив: 2007.06.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
15-1180338322
Капибара из дома
2007-05-28 11:45
2007.06.24
История про рогалики


4-1166968703
vertal
2006-12-24 16:58
2007.06.24
Нахождение имен всех com-портов в системе


2-1180639073
deras
2007-05-31 23:17
2007.06.24
Помогите с алгоритмом поиска...


15-1180136574
ЭРИКА
2007-05-26 03:42
2007.06.24
С ДНЕМ СВАДЬБЫ!


4-1168764520
TProgrammer
2007-01-14 11:48
2007.06.24
Выключение процесса