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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.037 c
6-1075194978
cherep
2004-01-27 12:16
2004.04.04
delphi и telnet


3-1078773828
ceval
2004-03-08 22:23
2004.04.04
как названия поля сделать по середине


6-1074675048
Behemoth
2004-01-21 11:50
2004.04.04
IdTCPServer - Где лежат IP-адреса клиентов?


1-1079594675
Billy
2004-03-18 10:24
2004.04.04
Как узнать существует ли данная форма???


4-1075092831
sad
2004-01-26 07:53
2004.04.04
Работа с Combobox в WinApi