private void workREST() { Socket socket = m_client.Client; while (m_bRunning) { byte[] buffer = new byte[ReceiveBufferSize]; SocketError err; uint totalSize = 0; int rcvd = socket.Receive(buffer, 0, ReceiveBufferSize, SocketFlags.None, out err); StringBuilder cmd = new StringBuilder(); if (rcvd > 0) { //do { if (err != SocketError.Success) { quit(); break; } for (int i = 0; i < rcvd; ++i) { cmd.Append((char)buffer[i]); } totalSize += (uint)rcvd; } while (rcvd >= ReceiveBufferSize) { rcvd = socket.Receive(buffer, 0, ReceiveBufferSize, SocketFlags.None, out err); if (err != SocketError.Success) { quit(); break; } for (int i = 0; i < rcvd; ++i) { cmd.Append((char)buffer[i]); } totalSize += (uint)rcvd; } // TODO check if the command is really complete Header h = new Header(); h.getTypeFromString(cmd.ToString()); h.length = totalSize; Command command = new Command(); command.worker = this; command.header = h; command.command = cmd.ToString(); m_service.addCommand(command); } } }