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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.005 c
3-19045
vopros
2002-02-07 09:26
2002.03.07
Не показывает отчет


14-19341
Феликс
2002-01-11 17:38
2002.03.07
Как такое может быть (программное распознование содержания jpg)?


1-19167
MaXie
2002-02-20 12:34
2002.03.07
Обработка исключительной ситуации...


6-19271
[TLS]Lord
2001-12-18 11:37
2002.03.07
Что, этого не кто не знает?


3-19044
HDD
2002-02-07 15:50
2002.03.07
Помогите пожалуйста дамы и господа





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский