#######the server############################## #!/usr/bin/perl -w use strict; use IO::Select; use IO::Socket; $| = 1; # create the socket my $host = shift || 'localhost'; my $port = 12345; my $socket = IO::Socket::INET->new( LocalPort => $port, LocalAddr => $host, Listen => 5, Proto => 'tcp', Reuse => 1, ); defined $socket or die "ERROR: Can't create socket: $!\n"; print STDERR "Socket open ... listening for incoming calls ..\n"; my $select = IO::Select->new($socket); my %socks; while (1) { foreach my $fh ($select->can_read) { if ($fh == $socket) { # new connection my $new = $socket->accept; $select->add($new); $socks{$new}{FH} = $new; print STDERR "Received new connection ($new) ..\n"; } else { my $data = <$fh>; if (defined $data) { $data =~ tr/\r\n//d; foreach my $handle (keys %socks) { print {$socks{$handle}{FH}} "$handle $data\n"; } } else { print "BYE $fh.\n"; $select->remove($fh); delete $socks{$fh}; $fh->close; } } } }