In fact, the line terminator can be either a newline or a carriage return or a carriage return followed immediately by a newline, as James' RemoteManager uses java.io.BufferedReader#readLine to read from the socket.