Francesco Bochicchio ha scritto:
No, in blocking mode it will wait to receive _some_ data (1 or
more bytes). The "requested" amount is strictly an upper
limit: recv won't return more than the requested number of
bytes, but it might return less.
Uhm. In my experience, with TCP protocol recv only returned less than
the required bytes if the remote end disconnects. I always check the
returned value of recv and signal an error if the read bytes are less
than the expected ones, but this error is never occurred (and its about
20 years that I use sockets in various languages and various flavor of
unix and occasionally on windows. Maybe have always been lucky ? :-)
BTW, this is not a rethorical or ironic question... my applications
mostly run on LANs or dedicated WANs so maybe they never experienced the
kind of network congestion that could cause recv to return less than the
expected amount of bytes ...
but then, IIRC TCP guarantees that the packet is fully received by
hand-shaking at transport level between sender and receiver. Ad once the
packet is fully in the receiver buffer, why should recv choose to give
back to the application only a piece of it?
Ciao
-----
FB
--
http://mail.python.org/mailman/listinfo/python-list