The select() call will return when data is available to be read from the socket, regardless of how much there is.
Hmm, maybe I didn't give enough info. I know this much, but in my implementation I call select() with a timeout of 0 in a "hasData()" function, so that if no data was sent by a client, the server can attend to others.. but say I called: send("Hello"). If the socket is blocking (BTW, are all TCP sockets blocking by default or something?), then the server's supposed to receive the whole message with one receive() call, right? But if the client has a really bad internet connection, will the server have to receive the message at a slow rate?