#! perl
use strict;
use warnings FATAL => 'all';
use Test::More tests => 3;
use AnyEvent::Handle::UDP;
use Socket qw/unpack_sockaddr_in/;
use IO::Socket::INET;
alarm 3;
{
my $cb = AE::cv;
my $server = AnyEvent::Handle::UDP->new(bind => [ localhost => 0 ], on_recv => $cb);
my $port = (unpack_sockaddr_in($server->sockname))[0];
my $client = IO::Socket::INET->new(PeerHost => 'localhost', PeerPort => $port, Proto => 'udp');
send $client, "Hello", 0;
is($cb->recv, "Hello", 'received "Hello"');
}
{
my $cb = AE::cv;
my $server = AnyEvent::Handle::UDP->new(bind => [ localhost => 0 ], on_recv => sub {
my ($message, $handle, $client_addr) = @_;
is($message, "Hello", "received \"Hello\"");
$handle->push_send("World", $client_addr);
});
my $client = AnyEvent::Handle::UDP->new(connect => $server->sockname, on_recv => $cb);
$client->push_send("Hello");
is($cb->recv, "World", 'received "World"');
}