AnyEvent::Ping - ping hosts with AnyEvent
use AnyEvent; use AnyEvent::Ping; my $host = shift || '4.2.2.2'; my $times = shift || 4; my $package_s = shift || 56; my $c = AnyEvent->condvar; my $ping = AnyEvent::Ping->new; print "PING $host $package_s(@{[$package_s+8]}) bytes of data\n"; $ping->ping($host, $times, sub { my $results = shift; foreach my $result (@$results) { my $status = $result->[0]; my $time = $result->[1]; printf "%s from %s: time=%f ms\n", $status, $host, $time * 1000; }; $c->send; }); $c->recv; $ping->end;
AnyEvent::Ping is an asynchronous AnyEvent pinger.
AnyEvent::Ping implements the following attributes.
interval
my $interval = $ping->interval; $ping->interval(1);
Interval between pings, defaults to 0.2 seconds.
timeout
my $timeout = $ping->timeout; $ping->timeout(3);
Maximum response time, defaults to 5 seconds.
error
my $error = $ping->error;
Last error message.
AnyEvent::Ping implements the following methods.
new
my $ping = AnyEvent::Ping->new(%options)
Constructs AnyEvent::Ping object. Following options can be passed:
on_prepare
In some cases you need to "tune" the socket before it is used to ping (for exmaple, to bind it on a given IP address).
my $ping = AnyEvent::Ping->new( on_prepare => sub { my $socket = shift; ... });
packet_generator
Generates the data to be sent.
my $ping = AnyEvent::Ping->new( packet_generator => sub { &AnyEvent::Ping::generate_data_random($packet_size); });
packet_size
You can set the number of data bytes to be sent, if packet generation function is not set. The default is 56, which translates into 64 ICMP data bytes when combined with the 8 bytes of ICMP header data.
my $ping = AnyEvent::Ping->new(packet_size => 56);
Each packet will be generated with generate_data_random() like this:
&AnyEvent::Ping::generate_data_random($packet_size);
ping
$ping->ping($ip, $n => sub { my $results = shift; foreach my $result (@$results){ my ($status, $time) = @$result; ... }; });
Perform a ping of a given $ip address $n times.
end
$ping->end;
Ends all pings and releases resources.
AnyEvent, AnyEvent::FastPing
Sergey Zasenko, undef@cpan.org.
undef@cpan.org
Kirill (qsimpleq)
Sebastien Deseille (sdeseille)
Copyright (C) 2012-2015, Sergey Zasenko
This program is free software, you can redistribute it and/or modify it under the same terms as Perl 5.12.
To install AnyEvent::Ping, copy and paste the appropriate command in to your terminal.
cpanm
cpanm AnyEvent::Ping
CPAN shell
perl -MCPAN -e shell install AnyEvent::Ping
For more information on module installation, please visit the detailed CPAN module installation guide.