1. i usually do, i just wrote that more as the 'beta'.
2. already done. see code below.
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;
};
}
}
}
}
god bless select(). |