I have the following code that I believe should function as an echo server.
#!/usr/bin/env perl
use strict ; use warnings ;
use AnyEvent ; use AnyEvent::Handle ; use AnyEvent::Socket ;
my $main = AnyEvent->condvar();
tcp_server undef, undef, sub {
my ($fh, $host, $port) = @_;
my $handle; $handle = AnyEvent::Handle->new(
fh => $fh,
on_error => sub {
my ($hdl, $fatal, $msg) = @_;
AE::log error => $msg;
$hdl->destroy();
},
on_eof => sub {
my ($hdl) = @_;
$hdl->destroy();
},
on_read => sub {
my ($hdl) = @_;
$hdl->push_read(line => sub {
my ($hdl, $line) = @_;
if ($line =~ m/quit/i) {
$hdl->push_write("goodbye\n");
$hdl->destroy();
}
$hdl->push_write($line);
});
}
);
$handle->push_write("Hello $host:$port\n");
}, sub {
my ($fh, $thishost, $thisport) = @_;
print STDERR "$thishost:$thisport\n";
};
$main->recv();
However, when I netcat into the server. I see the greeting and the server immediately closes the connection. I'm probably missing something simple, but not sure what.
Thanks!