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

Вниз

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

 
Васек   (2004-01-28 13:27) [0]

Здрасти
тут понадобилось пингануть из своей проги комп в сети
Сдела как описано в статье http://delphi.mastak.ru/articles/icmp.html
Все работает, но меня нисколько пинг интересовал скока TTL.
А в
   IcmpSendEcho(hIP,
                destAddress.S_addr,
                @pingBuffer,
                sizeof(pingBuffer),
                Nil,
                pIpe,
                sizeof(icmp_echo_reply) + sizeof(pingBuffer),
                5000);
Вместо параметров стоит NIL ... Как тока конструкцию не переделывал все равно получить TTL не могу. Подскажите как правельно нужно это оформить чтобы снять TTL.


 
Digitman ©   (2004-01-28 13:56) [1]

вместо nil нужно указать адрес структуры  

var
 ipopt : ip_option_information;
...
       ZeroMemory(@ipopt, sizeof(ipopt)); // !!
...

         if IcmpSendEcho( hIP,
                        destAddress.S_addr,
                        @pingBuffer,
                        sizeof(pingBuffer),
                        @ipopt,
                        pIpe,
                        sizeof(icmp_echo_reply) + sizeof(pingBuffer),
                        5000) = 0 then ...


 
Васек   (2004-01-28 14:42) [2]

Digitman
Теперь даже не пингуется ... TTL возвращается = 0


 
Digitman ©   (2004-01-29 09:49) [3]

ты pIpe.Status проверяешь после выполнения IcmpSendEcho() ?

что говорит ?


 
OlehM   (2004-01-29 15:56) [4]

with ipopt do
 begin
   Ttl := 255;
   Tos := 0;
   Flags := 0;
   OptionsSize := 0;
   OptionsData := nil;
 end;

Должно заработать


 
Васек   (2004-01-29 21:16) [5]

Digitman
Выдает
>> Status: 11007

OlehM
Да работает, но тогда TTL задаю я (ttl=255), а следовательно и получаю его же (ttl=255).


 
Digitman ©   (2004-01-30 08:52) [6]

значит, задана некорректная опция при вызове icmpsendecho()

вот тебе достаточно полный перечень кодов возвращаемого статуса, разбирайся, что у тебя не так ..

const
 IP_SUCCESS                  = 0;
 IP_STATUS_BASE              = 11000;
 IP_BUF_TOO_SMALL            = (IP_STATUS_BASE + 1);
 IP_DEST_NET_UNREACHABLE     = (IP_STATUS_BASE + 2);
 IP_DEST_HOST_UNREACHABLE    = (IP_STATUS_BASE + 3);
 IP_DEST_PROT_UNREACHABLE    = (IP_STATUS_BASE + 4);
 IP_DEST_PORT_UNREACHABLE    = (IP_STATUS_BASE + 5);
 IP_NO_RESOURCES             = (IP_STATUS_BASE + 6);
 IP_BAD_OPTION               = (IP_STATUS_BASE + 7);
 IP_HW_ERROR                 = (IP_STATUS_BASE + 8);
 IP_PACKET_TOO_BIG           = (IP_STATUS_BASE + 9);
 IP_REQ_TIMED_OUT            = (IP_STATUS_BASE + 10);
 IP_BAD_REQ                  = (IP_STATUS_BASE + 11);
 IP_BAD_ROUTE                = (IP_STATUS_BASE + 12);
 IP_TTL_EXPIRED_TRANSIT      = (IP_STATUS_BASE + 13);
 IP_TTL_EXPIRED_REASSEM      = (IP_STATUS_BASE + 14);
 IP_PARAM_PROBLEM            = (IP_STATUS_BASE + 15);
 IP_SOURCE_QUENCH            = (IP_STATUS_BASE + 16);
 IP_OPTION_TOO_BIG           = (IP_STATUS_BASE + 17);
 IP_BAD_DESTINATION          = (IP_STATUS_BASE + 18);
 IP_ADDR_DELETED             = (IP_STATUS_BASE + 19);
 IP_SPEC_MTU_CHANGE          = (IP_STATUS_BASE + 20);
 IP_MTU_CHANGE               = (IP_STATUS_BASE + 21);
 IP_GENERAL_FAILURE          = (IP_STATUS_BASE + 50);
 MAX_IP_STATUS               = IP_GENERAL_FAILURE;
 IP_PENDING                  = (IP_STATUS_BASE + 255);


 
Васек   (2004-01-30 11:11) [7]

Digitman
Согласен задавать ttl=0 это ошибка IP_BAD_OPTION
Но мне нужно получить TTL с конкретного IP, а не задавать TTL самому как это предложил OlehM


 
Digitman ©   (2004-01-30 11:22) [8]


> Васек   (30.01.04 11:11) [7]


а ты не путаешь ?
может, тебя не TTL интиресует, а RTTime ?


 
Васек   (2004-01-30 11:26) [9]

Не путаю, нужно получить RTTime (что делается легко) и TTL (здесь и застрял)
Т.е. интересует 192.168.2.1 RTTime=4мс TTL=128


 
Digitman ©   (2004-01-30 12:52) [10]

реализуй tracert
в цикле пока не достигнут целевой адрес и пока IP_SUCCESS инкрементируй ttl

по выходу из цикла, если достигнут целевой адрес и IP_SUCCESS поле ttl будет содержать интересующее тебя значение



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

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

Наверх




Память: 0.47 MB
Время: 0.031 c
14-1078903656
Карелин Артем
2004-03-10 10:27
2004.04.04
Посоветуйте сайты по Страйкболу.


1-1079203350
Anarki
2004-03-13 21:42
2004.04.04
Вопрос по процедруе в форме.


1-1079425364
Rule
2004-03-16 11:22
2004.04.04
Непонятки с МDI приложением ...


7-1074071934
KokWASP
2004-01-14 12:18
2004.04.04
Из-под NT, W2K не работает FindFirst на NetWare вских дисках.


1-1079251428
Sphinx
2004-03-14 11:03
2004.04.04
Свернуть-Развернуть= -2МБ





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