Hi,
Interestingly enough this code works:
The server sends the numbers from 0 to 1000 a second at a time. Maximum 5 clients are catered for.
#!/usr/bin/perl use strict; use warnings; use IO::Socket; my $server = IO::Socket::INET->new(LocalPort => 5000,Listen =>5); while (my $client = $server->accept()) { foreach my $i (0..1000) { sleep (1); print $client $i . "\n"; } close $client; }
The client looks for a 'working' socket. If nothing found it will print a dot. If found it will get a handle to read the socket.
#!/usr/bin/perl use strict; use warnings; use IO::Socket; use IO::Select; use IO::Handle; my $server = IO::Socket::INET->new(PeerAddr => "localhost",PeerPort => + 5000, Proto => "tcp"); my $sel = new IO::Select; $sel->add($server); while (1) { my @handles = $sel->can_read(0.10); if (@handles) { foreach my $s (@handles) { my $line = <$s>; print $line; } } else { print "."; } }
In reply to Re: Using select() on only one socket
by gargle
in thread Using select() on only one socket
by ivanatora
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |