Журавлев Алексей, 394, Telnet

Во-первых избавиться от  try внутри try, это нечитаемо. можно какой-то код выделить в отдельный метод. во вторых 
      command.execute(server);
+                } catch (UnknownCommandException e) {
+                    try {
+                        ClientCommand command = ClientCommand.fromString(textCommand);
+                        command.execute(client);

это выглядит как использование исключений не по назначению. ты сначала пытаешься исполнить команды удаленно, потом если не получилось - локально. Тут надо в целом переписать всю логику и упростить её. По isConnected() и тексту команды, должно быть понятно, как её можно исполнить заранее.