in reply to Threaded sockets, etc.

How do you know a timeout is occurring? I have a few questions:
1) I assume that $in really is the fileno for $self.
2) You do realize that you are setting both the read *and* write bits for $self/$in? This means that the select will return $found>0 if $self/$in is writable but not readable. This will cause the sysread to hang. Is that what you expect?

Replies are listed 'Best First'.
Re^2: Threaded sockets, etc.
by daveb (Initiate) on Aug 29, 2008 at 18:57 UTC
    Basically I have a test client which connects fine, disconnects fine, but if I leave it alone for a while loses the connection to the server, but the server continues that while loop. I suppose you could say I'm assuming a timeout occurs, or at least some problem that only shows itself when there is no activity for a period of time. (If the client is sporadically sending information, the problem does not rear its ugly head! 1. Correct. 2. That last addition (adding the write bit) was me hoping that it'd return something useful/not getting it, the problem was there before that change. More to the point, and a terrible thing to do, but I added the select call later in an attempt to fix the problem, at first it was just sysreading in a while loop, and then ignoring "resource temporarily not available" errors. Even then, sysread wouldn't return EOF when the client was left idling for a while.