[EMAIL PROTECTED] wrote:
I wanted to ask for standard ways to receive data from a socket stream (with socket.socket.recv()). It's simple when you know the amount of data that you're going to receive, or when you'll receive data until the remote peer closes the connection. But I'm not sure which is the best way to receive a message with undetermined length from a stream in a connection that you expect to remain open. Until now, I've been doing this little trick:data = client.recv(256) new = data while len(new) == 256: new = client.recv(256) data += new That works well in most cases. But it's obviously error-prone. What if the client sent *exactly* two hundred and fifty six bytes? It would keep waiting for data inside the loop. Is there really a better and standard way, or is this as best as it gets? Sorry if this is a little off-topic and more related to networking, but I'm using Python anyway.
You solve this by having a protocol that the client and server both agree on, so that the client knows how much to read from the server. There are any number of ways of doing this, all of which depend on the kind of data you want to transfer and for what purpose.
-- Erik Max Francis && [EMAIL PROTECTED] && http://www.alcyone.com/max/ San Jose, CA, USA && 37 18 N 121 57 W && AIM, Y!M erikmaxfrancis In the final choice a solider's pack is not so heavy a burden as a prisoner's chains. -- Dwight D. Eisenhower, 1890-1969 -- http://mail.python.org/mailman/listinfo/python-list
