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

Вниз

Ping   Найти похожие ветки 

 
Alexey_K   (2001-12-15 16:51) [0]

Я новичек в Дельфи
Помагите мне разобраться в TPing"е что и как там работает.
Я перерыл все ссылки но ничего подробно-объясняющего не нашел
На этом сайте я нашел неплохую статью по Ping"у через icmp
http://delphi.mastak.ru/articles/icmp.html
но не могу понять почему после первого клика пишет
Error in call togethostbyname().
Error code: 1060
и как от этого избавиться. И как сделать чтобы если хост не ответил то не писался бы последний ответевший а просто это давало бы както знать
Спасибо.


 
Wonder ©   (2001-12-17 17:09) [1]

Небось NT стоит?
Проверяй pHostEn на (nil)/(не nil) после вызова gethostbyname, а не возвращенное значение GetLastError().
Т.е. :

pHostEn := nil;
pHostEn := gethostbyname("delphi.mastak.com");
if (pHostEn = nil) then //ошибка
...


В статье не совсем верная проверка на ошибку.


 
Alexey_K   (2001-12-19 15:55) [2]

Сообщение
Error in call togethostbyname().
Error code: 1060
ушло но насчет того что,
отвечает другой а не тот кого ping"овал,
вместо того чтобы сообщить о том что host не отвечает - это еще есть
что надо сделать?


 
Wonder ©   (2001-12-19 16:05) [3]

Еще раз. Кого ты пингуешь и кто отвечает?
Если хост, которому ты посылаешь эхо-запрос, не отвечает, то у тебя вылетит ошибка (поле Status структуры icmp_echo_reply) и за него никто ничего не ответит.


 
Alexey_K   (2001-12-20 15:51) [4]

Попробуй понгануть 212.110.128.10
выйдет ответ

Pinging 212.110.128.10 [212.110.128.10]
with 32 bytes of data:
Reply from 212.110.128.200
Reply time: 4217 ms

и не какой ошибки не появляется


 
Wonder ©   (2001-12-20 15:57) [5]

Я ж тебе говорю - смотри поле Status!
Там будет код 11003 - IP_DEST_HOST_UNREACHABLE
Это как раз сообщение ICMP об ошибке. Анализируй поле Status и на его основе решай - выдавать ответ или выдавать сообщение об ошибке.


 
Alexey_K   (2001-12-20 16:17) [6]

Если не трудно подскажи как анализировать, я не врубаюсь


 
Wonder ©   (2001-12-20 16:33) [7]


var reply_count : DWORD;

...

reply_count := IcmpSendEcho(...);

if (reply_count = 0) then //Ошибка
begin
error := GetLastError();
Memo1.SetTextBuf("Error in call to "+
"IcmpSendEcho()");
Memo1.Lines.Add("Error code: "+IntToStr(error));
Exit;
end;

if (pIpe^.Status = 0)
begin
Memo1.Lines.Add("Reply from "+
IntToStr(LoByte(LoWord(pIpe^.Address)))+"."+
IntToStr(HiByte(LoWord(pIpe^.Address)))+"."+
IntToStr(LoByte(HiWord(pIpe^.Address)))+"."+
IntToStr(HiByte(HiWord(pIpe^.Address))));
Memo1.Lines.Add("Reply time: "+IntToStr(pIpe.RTTime)+" ms");
end
else //Ошибка
begin
Memo1.SetTextBuf("Error code: "+IntToStr(pIpe^.Status));
end;


 
Alexey_K   (2001-12-21 14:25) [8]

вот теперьвсе работает
спасибо



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

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

Наверх




Память: 0.48 MB
Время: 0.01 c
3-19116
Cossys
2002-02-07 13:35
2002.03.07
Что не так с запросом? Помогите, пожалуйста.


14-19302
Potemkin
2002-01-18 10:26
2002.03.07
Вопрос по QR3


14-19331
tovSuhov
2002-01-22 08:43
2002.03.07
Предложение к Хозяевам сайта...


3-19106
klnyaz17
2002-02-08 15:07
2002.03.07
Где просмотреть поле значения которого представляют собой HTML страницы?


3-19102
Siberia
2002-02-11 11:45
2002.03.07
Подскажите где взять компоненты для печати