int Receive (byte[] buf, int buf_offset, int len) { int offset = 0; while (offset < len) { int n = socket.Receive (buf, buf_offset + offset, len - offset, SocketFlags.None); if (n == 0) return offset; offset += n; } return offset; }