The Receive method will read all data available. If no data is available it will block until data is available.

It all boils down to what it is you're reading from the stream and why. If you need to be reading from the stream continously, and "endless" loop is the normal approach:
Code:
Do
 mySocket.Receive(buff)
 ' Do some more work with the received data
While True
Altough if that is not the case, you would have to know when you have received all of it. Since you're the only one that knows what it is you're receiving, do you have anything that could tell you when you've received all data?