sockets - recv with time out
Joseph A Knapka
jknapka at earthlink.net
Fri Jan 11 14:33:03 EST 2002
Steve Holden wrote:
>
> "David Bolen" <db3l at fitlinxx.com> wrote in message
> news:uy9j5a0ds.fsf at ctwd0143.fitlinxx.com...
> > westernsam at hotmail.com (sam) writes:
> >
> > > I know generally this should be handled
> > > better, but seeing as am working with what I'm given is there a way I
> > > can do a recv with a timeout (to throw an exception, when the timeout
> > > is reached)? Is this something that can be achieved with non-blocking
> > > sockets and if so how?
> >
> > Typically you'd select() on the socket before doing the recv() - the
> > select() can have a timeout. Shouldn't be any particular need for
> > non-blocking sockets.
> >
> Erm, how would you do a recv() when your program is blocked waiting for
> select() to return? Non-blocking sockets are an absolute necessity for this
> application, and timeoutsocket is the best solution, as Oleg has already
> said.
Er... how's that? Given the OP's stated requirements,
what's wrong with:
timeout = 10 # seconds
readable = select([sock],None,None,timeout)
if readable:
data2 = sock.recv()
????
This code won't make you wait any longer than
timeoutsocket would, no matter what the client
does.
Cheers,
-- Joe
"I should like to close this book by sticking out any part of my neck
which is not yet exposed, and making a few predictions about how the
problem of quantum gravity will in the end be solved."
--- Physicist Lee Smolin, "Three Roads to Quantum Gravity"
More information about the Python-list
mailing list