use IO#read rather than making multiple calls to Socket#recvfrom