Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];

Вниз

Не проходит PING на несколько адресов(IP)   Найти похожие ветки 

 
Dimich1978   (2005-10-10 14:55) [0]

Все делаю используя ИНди Компонент 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(("Ïîñëåäîâàòåëüíîñ&#2 42;ü Id: "+inttostr(AReplyStatus.SequenceId)));
end;
Получаю ответ:
Спервого адреса все в порядке ПИНГ ОК, по второму и третьему говорит что ПИНг для 0.0.0.0 и все.
Сервера на 100% работаю в данное время, т.е. ответ приходит.
Что не так подправьте мозги.


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

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


 
Dimich1978   (2005-10-10 15:21) [2]

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


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

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


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

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

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


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

Dimich1978   (10.10.05 14:55)

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


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


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

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


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

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


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

Поставь 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 17:37) [9]

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



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

Форум: "Сети";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.044 c
1-1134367690
Atomic
2005-12-12 09:08
2006.01.22
Как в DateTimePicker програмно выделить месяц или год


14-1135413928
Сафаров
2005-12-24 11:45
2006.01.22
рисунки на кнопки


4-1130978882
kisik
2005-11-03 03:48
2006.01.22
Отправка файла на "соседний компьютер" через IrDa


14-1135978840
Sergey Masloff
2005-12-31 00:40
2006.01.22
Оказывается сегодня уже 31


2-1136558855
dabreezy
2006-01-06 17:47
2006.01.22
Команда при запуске программы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский