Sockets: Sending/receiving arbitrary amounts of data

Greg Ewing see at my.signature
Tue May 1 01:46:04 EDT 2001


Neil Schemenauer wrote:
> 
>         s = sock.recv(size)
>         if len(s) != size:
>             raise IOError, "short netstring read"

That's not quite right, either, because sock.recv(size)
may return before all size bytes have arrived. You
need to put it in a loop, something like

  s = ""
  while len(s) < size:
    s1 = sock.recv(size - len(s))
    if s1 == "":
      raise IOError, "unexpected EOF on socket"
    s = s + s1

-- 
Greg Ewing, Computer Science Dept, University of Canterbury,	  
Christchurch, New Zealand
To get my email address, please visit my web page:	  
http://www.cosc.canterbury.ac.nz/~greg



More information about the Python-list mailing list