Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не проходит PING на несколько адресов(IP) [D7, Win2k, WinXP]


Dimich1978 ©   (2005-10-10 14:55:00) 

Все делаю используя ИНди Компонент IdIcmpClient1
Пишу следующее:
По таймеру срабатывает
for i:=1 to 3 do
  begin
   if i=1 then ipadr:=JvIPAddress1.Text;
   if i=2 then ipadr:=JvIPAddress2.Text;
   if i=2 then ipadr:=JvIPAddress3.Text;
     Self.IdIcmpClient1.Host:=ipadr;
     Self.IdIcmpClient1.TTL:=128;
     Self.IdIcmpClient1.Ping;
     Ping (pchar(ipadr),nil,Reply,5000);
     ListBox1.Items.Add ('RawReply:'+IntToStr (Reply.RoundTripTime));
  end;
где JvIPAddress1.Text- IP серверов инетовских, которых надо пропинговать
procedure TForm1.IdIcmpClient1Reply(ASender: TComponent;
 const AReplyStatus: TReplyStatus);
begin
ListBox1.Items.Add ('Ïîâòîðåíèé:'+IntToStr (AReplyStatus.MsRoundTripTime));
Listbox1.Items.Add(('Ñòàòèñòèêà Ping äëÿ: '+AReplyStatus.FromIpAddress));
  Listbox1.Items.Add(('ïðèáëèçèòåëüíîå âðåìÿ ïðèåìà-ïåðåäà÷è: '+inttostr(AReplyStatus.MsRoundTripTime)));
  Listbox1.Items.Add(('áàéò ïîëó÷åíî: '+inttostr(AReplyStatus.BytesReceived)));
  {ïðèõîäèò 72 áàéòà, íî èçíèõ 40 áàéò ñîñòàâëÿåò çàãîëîâîê icmp ïàêåòà}
  Listbox1.Items.Add(('TTL: '+inttostr(AReplyStatus.TimeToLive)));
  Listbox1.Items.Add(('Ïîñëåäîâàòåëüíîñ 42;ü Id: '+inttostr(AReplyStatus.SequenceId)));
end;
Получаю ответ:
Спервого адреса все в порядке ПИНГ ОК, по второму и третьему говорит что ПИНг для 0.0.0.0 и все.
Сервера на 100% работаю в данное время, т.е. ответ приходит.
Что не так подправьте мозги.


Dimich1978   (2005-10-14 17:37:00) [1]

переправил...тоже самое сохранилось..обратно пинг проходит нормально только с первым пингуеммым хостом, с отсальными двумя фиг. Походу ошибка в компаненте.


Ботвин Дмитрий   (2005-10-14 17:06:00) [2]

Поставь ReceiveTimeout := 1000 и в цикле добавь sleep
for i:=1 to 3 do
 begin
  if i=1 then ipadr:=JvIPAddress1.Text;
  if i=2 then ipadr:=JvIPAddress2.Text;
  if i=2 then ipadr:=JvIPAddress3.Text;
    Self.IdIcmpClient1.Host:=ipadr;
    Self.IdIcmpClient1.TTL:=128;
    Self.IdIcmpClient1.Ping;
    Ping (pchar(ipadr),nil,Reply,5000);
    ListBox1.Items.Add ('RawReply:'+IntToStr (Reply.RoundTripTime));
    Sleep(1000);
 end;

Здается мне


Dimich1978   (2005-10-14 16:36:00) [3]

Если пинговать средствами винды по всем хостам, то все нормально, пинги ответов приходят, т.е. хосты пингуемые, и файерволл не блокирует эту возможность. Даже если изменить очередность пингуемых серверов, все равно отсается пинговать только первый(без разницы какой из трех ставлю первым на пинг), а второй и третий...в ауте. Так что дело я думаю в самом компоненте. Может кто еще чем сподможет?


-=S..S=-   (2005-10-10 16:57:00) [4]


> Ботвин Дмитрий   (10.10.05 16:45) [4]

ну таких тонкостей я не знаю :)


Ботвин Дмитрий   (2005-10-10 16:47:00) [5]

Dimich1978   (10.10.05 14:55)

На компах возможно стоит файервол с опцией "не отвечать на пинг", примерно так называется. При этом ты кнему подключиться можешь, а пропинговать нет.


Ботвин Дмитрий   (2005-10-10 16:45:00) [6]

-=S..S=-   (10.10.05 15:01) [1]

"стандартная ошибка асинхронных неблокирующих сокет" - Инди работает тока в блокирующем режиме :-))


-=S..S=-   (2005-10-10 16:01:00) [7]

А вы попробуйте порядок пингуемых серверов поменять :) Может он принципиально не пингуеться :)


Dimich1978   (2005-10-10 15:21:00) [8]

IdIcmpClient1.Active-нет такого.
про второе не скажу, видно только то что пингуется только один.
Пробовал и три компаненты бросить и собирать ответы с каждого Клиента,, то же самое.


-=S..S=-   (2005-10-10 15:01:00) [9]

а у компонента есть свойство что то типа IdIcmpClient1.Active ?
что бы пинговать надо сначала подконектиться  что не известно .. подконектился или нет ? ... это раз ... а во вторых может просто стандартная ошибка асинхронных неблокирующих сокетов


Наверх

Титульная страница Поиск, карта сайта Написать письмо