Главная страница
    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.03 c
3-1078325088
MakNik
2004-03-03 17:44
2004.04.04
SQL запрос


3-1078389726
Laymer
2004-03-04 11:42
2004.04.04
Access


14-1079074974
ЫЗШКШЕ
2004-03-12 10:02
2004.04.04
ГРАБЛИ !!!!!!!


8-1069859027
TitanDesign
2003-11-26 18:03
2004.04.04
Изменение картинки при наведении...


3-1078753463
Aldor
2004-03-08 16:44
2004.04.04
Ошибка: "<Table> was not locked with LOCK TABLES".





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