一个菜问题:ping源码运行不成功请指教
我下载perl的net;;rawip包时,里面有自带的一些例子。一个是ping
程序。一个很简单的程序老不成功。//faint
一:却是运行没有结果呢(一直等待)?怎么回事?是机器还是程序问题呢?
二:loop函数的第二个参数-1表示什么,perldoc文档也没说啊
三:对于$filt = 'ip proto \\icmp and icmp[0]==0 and dst host my.site.lan';
这一行什么意义。,过滤条件看起来挺灵活复杂的,写时有什么规则啊。
#!/usr/bin/perl
use Net::RawIP qw(:pcap);
$a = new Net::RawIP ({icmp =>{}});
$a->set({ip => {saddr => 'localhost', # insert your site here !
daddr => $ARGV[0]},
icmp => {type => 8, id => $$}
});
$device = 'eth0'; # insert your device here !
# insert your site here!
$filt = 'ip proto \\icmp and icmp[0]==0 and dst host my.site.lan';
#这里我把目标my.site.lan改程我的主机211.45.144.19
$size = 1500;
$tout = 30;
$pcap = $a->pcapinit($device,$filt,$size,$tout);
$i =0;
if(fork){
loop $pcap,-1,\&dmp,\@a;
}
else{
sleep 2;
for(;;){
$a->set({icmp => {sequence => $i,data => timem()}});
$a->send(1,1);
$i++
}
}
sub dmp{
my $time = timem();
$a->bset(substr($_[2],14));
my @ar = $a->get({ip => [qw(ttl)], icmp=>[qw(sequence data)]});
printf("%u bytes from %s: icmp_seq=%u ttl=%u time=%5.1f
ms\n",length($ar[2])+8,
,$ARGV[0],$ar[1],$ar[0],($time-$ar[2])*1000);
}