use strict; use IO::Socket; use IO::Select; my $listen = IO::Socket::INET->new(Proto => 'tcp', LocalPort => 9192, Listen => 1, Reuse => 1) or die $!; my $select = IO::Select->new($listen); my @ready; while(@ready = $select->can_read) { my $socket; for $socket (@ready) { if($socket == $listen) { my $new = $listen->accept; $select->add($new); print $new->fileno . ": connected\n"; } else { my $line=""; $socket->recv($line,80); if($line eq "") { print $socket->fileno . ": disconnected\n"; $select->remove($socket); $socket->close; }; my $socket; for $socket ($select->handles) { next if($socket==$listen); $socket->send($line) or do { print $socket->fileno . ": disconnected\n"; $select->remove($socket); $socket->close; }; } } } }