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
Er... how's that? Given the OP's stated requirements,
what's wrong with:
timeout = 10 # seconds
readable = select([sock],None,None,timeout)
data2 = sock.recv()
This code won't make you wait any longer than
timeoutsocket would, no matter what the client
"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