in reply to Re^2: select appears to ignore pending data on socket.
in thread select appears to ignore pending data on socket.

Maybe there's something you've overlooked when creating the socket/select objects. maybe we can help you more if you show the bit of code that creates those object.

  • Comment on Re^3: select appears to ignore pending data on socket.

Replies are listed 'Best First'.
Re^4: select appears to ignore pending data on socket. it works now, but i dont know why.
by Zidane (Acolyte) on Nov 03, 2007 at 22:40 UTC

    i beleive i have found the bug......

    in the following section of code:-

    #create new client socket object sub create_new_client_sock { #create socket my $sock = IO::Socket::INET->new( PeerAddr => $conf_file->{server}, PeerPort => $conf_file->{port}, Blocking => 0, ); #check if socket exists if (!($sock)) { die "could not establish socket to " . $conf_file->{server} . +":" . $conf_file->{port} . "\n"; } #return socker object reference return $sock; }

    it would appear that if i set the socket to non-blocking, the script fails with the symptoms described. but if i set it to blocking, then it works perfectly...

    i am mystified as to why, and to be frank, right now i am past caring, it has taken me all day to figure this out, including three different writes (using a while loop, event module and select).

    thankyou for your patience and your help, but i think i am going to call it a day for now and try and figure out what i did wrong in the morning.

Re^4: select appears to ignore pending data on socket.
by Zidane (Acolyte) on Nov 03, 2007 at 21:54 UTC

    the whole script and the configuration file

    well, for a moment i thought i had it working..... but it would appear i dont.

    it would appear that the select can_read only triggers when a new packet is received, not when there is data in the socket buffer, and for some reason i am not emptying the sockets entire buffer.