# server.pl use strict; use IO::Socket; use IO::Select; my $main_sock = new IO::Socket::INET( LocalAddr => '127.0.0.1', LocalPort => 1200, Proto => 'tcp', Listen => 1, ReuseAddr => 1, ); die "Could not initialize server: $!\n" unless $main_sock; print "Server has successfully initialized.\n\n"; my $r_handles = new IO::Select(); $r_handles->add( $main_sock ); while (1) { my ($new_r) = IO::Select->select( $r_handles, undef, undef, 0 ); foreach my $sock (@$new_r) { if ($sock == $main_sock) { my $new_sock = $sock->accept(); $r_handles->add($new_sock); } else { my $buf = <$sock>; if ($buf) { print "$buf\n"; } else { $r_handles->remove($sock); close $sock; } } } } # client.pl use strict; use IO::Socket; my $client_id = $ARGV[0]; my $sock = new IO::Socket::INET( PeerAddr => '127.0.0.1', PeerPort => 1200, Proto => 'tcp', ); die "Could not connect to server: $!\n" unless $sock; for (1 .. 5) { print $sock "From $client_id: Msg $_\n"; sleep 1; } close $sock;