Форум: "Сети";
Текущий архив: 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(("Ïîñëåäîâàòåëüíîñ 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.041 c