Perl, аналог tracerout, не могу прочитать icmp пакет

Discussion in 'PHP' started by Ganibal, 25 May 2013.

  1. Ganibal

    Ganibal New Member

    Joined:
    20 Jul 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    такой вот вопрос, все уже перегуглил, но так и не решил. На Линуксе все работает, пакеты отправляются и нормально считываются, но мне нужно, чтобы работало и на Винде.

    Вот примерный код:

    PHP:
    $udp = new IO::Socket::INET (
                                
    LocalPort => 33435,
                                
    Proto => 'udp',
                                
    PeerAddr => $ip,
                                
    PeerPort => 33435
                                
    ) or die "Cann't create socket: $!";
    $icmp = new IO::Socket::INET (
                                
    LocalPort => 33435,
                                
    Proto => 'icmp'
                                
    ) or die "Cann't create socket: $!";

    print 
    $udp 'Echo';
    $icmp->recv($datagram1500$flags);

    и на винде просто зависает и все.

    Смотрел трафик WireShark'ом пакет отправляется, icmp пакет приходит, но скрипт не может прочитать... помогите пожалуйста.


    и да, сторонние библиотеки не предлагать типа Ping Traceroute
     
    #1 Ganibal, 25 May 2013
    Last edited: 25 May 2013
  2. Gelo

    Gelo New Member

    Joined:
    4 May 2013
    Messages:
    42
    Likes Received:
    2
    Reputations:
    1
    на каких версиях венды тестил?
    тебе статистику снимать или управлять надо? цель какая?
     
  3. Ganibal

    Ganibal New Member

    Joined:
    20 Jul 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    win 7 64bit, мне нужен аналог traceroute на перле, без использования сторонних библиотек
     
  4. Gelo

    Gelo New Member

    Joined:
    4 May 2013
    Messages:
    42
    Likes Received:
    2
    Reputations:
    1
    у icmp диапазон портов, какие юзает вынь?
     
  5. Ganibal

    Ganibal New Member

    Joined:
    20 Jul 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    с этим все в порядке, порты тоже, на какой отправляю, на тот и приходит, тот же и читаю... на Ubuntu все работает, считывает нормально, на винде зависает на считывании icmp пакета, хотя Wireshark показывает что пакет пришел.
     
  6. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    809
    Reputations:
    231
    Может проще взять модуль
    http://search.cpan.org/dist/Net-Traceroute-PurePerl/PurePerl.pm
    и взять оттуда нужный код?
    Всего ~800 строк кода на чистых сокетах.
     
    _________________________