Skink wrote:
[...]

> what's wrong here?

Sion Arrowsmith is right about what causes the delay.
Just in case your real code looks like this, I'll note:

>     len, = struct.unpack("!i", s.recv(4))
>     data = s.recv(len)

First, you almost certainly don't want to use the name 'len'.
Ought not to be allowed. Second, recv can return fewer bytes
than requested, even when the connection is still open for
reading. You might replace the lines above with (untested):

     length = struct.unpack("!i", s.recv(4))
     data = []
     while length:
         data.append(s.recv(length))
         length -= len(data[-1])
     data = ''.join(data)


There's still a robustness problem, but in the absense of errors
and malice, that should work. I think.


-- 
--Bryan
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to