use 5.12.0;
use warnings;
use UniEvent;
# Simple echo server in udp
# perl examples/udp-echo-server.plx 1234
#
# Can be tested via:
# - nc -u 127.0.0.1 1234
# - perl examples/udp-echo-client.plx 1234
#
my ($port) = @ARGV;
$port //= 9999;
my $server = UniEvent::Udp->new;
$server->bind('127.0.0.1', $port);
say "$$ listening on port $port";
$server->recv_start;
$server->receive_callback(sub {
my ($server, $data, $peer_addr, $flags, $error_code) = @_;
if ($error_code) {
say "receive error :: $error_code";
$server->loop->stop;
}
say "client ", $peer_addr, " has sent us ", length($data), " bytes";
$server->send($data, $peer_addr);
});
$server->loop->run;