Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Using select() on only one socket

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


in reply to Using select() on only one socket

Hi,

Interestingly enough this code works:

server.pl

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; }
client.pl

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 :)
    Thanks.

      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?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (8)
As of 2024-04-25 11:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found