Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Re: Using select() on only one socket

by gargle (Chaplain)
on Sep 04, 2005 at 10:26 UTC ( #489039=note: print w/replies, xml ) Need Help??

in reply to Using select() on only one socket


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 "."; } }
if ( 1 ) { $postman->ring() for (1..2); }

Replies are listed 'Best First'.
Re^2: Using select() on only one socket
by ivanatora (Sexton) on Sep 04, 2005 at 10:56 UTC

    Problem solved!

    I didn't use the handles returned from can_read(). Actually I thought that I can use the initial $sock filehandle after the select statement... When I use the handle returned from can_read, it works perfectly :)

      I know you already got a solution, but...

      Could the real problem be because your example used $sock when you create the socket and add it to the select, but $socket on the line where you try to read it ? (use strict should catch this though, so perhaps it's just a typo you made while entering the example)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://489039]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (9)
As of 2021-01-27 10:42 GMT
Find Nodes?
    Voting Booth?