I am having a similar problem under Windows XP and Perl 5.8.6:
C:\>perl -de 1
Loading DB routines from perl5db.pl version 1.28
Editor support available.
Enter h or `h h' for help, or `perldoc perldebug' for more help.
main::(-e:1): 1
DB<1> use Net::Ping;
DB<2> $tcp = Net::Ping->new('tcp');
DB<3> print +($tcp->ping('4.2.2.2') ? "Up\n" : "Down\n");
Up
DB<4> $icmp = Net::Ping->new('icmp');
icmp socket error - at (eval 11)[C:/Perl/lib/perl5db.pl:628] line 2
DB<5> print "$]\n";
5.008006
DB<6> q
The code in Ping.pm getting the error is:
socket($self->{"fh"}, PF_INET, SOCK_RAW, $self->{"proto_num"}) ||
croak("icmp socket error - $!");
Raw sockets can only be opened by those running with 'root' permission (easily verified on my Linux box). However, what's the equivalent under Windows? I have an alternate id that's a full administrator, but it fairs no better. The maddening thing is that this used to work for me, but with my brand-new laptop with WinXP - it's broken.
Does anyone have an idea how to allow a normal Windows user to open a raw socket so that icmp pings can work?
TIA
GreyGeek |