recv receives up to 16384 bytes