Socket connections may not actually fill byte[]

Because of network latency, packet size, etc. the byte[] may not be filled on a single read() call for larger message sizes.

This while loop will ensure that the full message body is read.