Чат (11)

  • 14
  • Недоступна
Пришло время написать главный метод класса Handler, который будет вызывать все вспомогательные методы, написанные ранее. Реализуем метод void run() в классе Handler. Он должен: 1) Выводить сообщение, что установлено новое соединение с удаленным адресом, который можно получить с помощью метода getRe
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (114)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Иван Смородский27 уровень, Москва
вчера, 19:30
К чему здесь 4 пункт с sendBroadcastMessage, если есть notifyUsers?
Konstantin35 уровень, Одесса
2 августа, 09:55
Не задание, а угадай-ка.
skybright33 уровень
12 июля, 16:54
Повторю то, что сказано ранее. 1. Чтобы побороть путаницу с try catch:
try (Connection connection = new Connection(socket)) {
    ...
    } catch (IOException | ClassNotFoundException e) {
        ConsoleHelper.writeMessage("Произошла ошибка при обмене данными с удаленным адресом");
    }
тогда connection закрывать не надо, он закроется автоматом. 2. удалять поле и сообщать об этом надо в try после основного цикла
Даниил34 уровень
1 мая, 12:21
У кого не проходит никак условие "Прежде чем завершиться, метод run() должен удалять из connectionMap запись соответствующую userName, и отправлять всем участникам чата сообщение о том, что текущий пользователь был удалён.", то я пока не подсмотрел чужое решение не додумался что нужно не использовать цикл foreach отправлять всем сообщения через метод Connection send(Message), а просто ещё раз вызвать метод sendBroadcastMessage(Message).
Вадим35 уровень, Новосибирск
25 марта, 16:02
Валик не пускал, из за того что 9 и 10п идут после блока try/catch, а не в нем
Petrusiova30 уровень
22 мая, 16:09
спасибо за подсказку! сбило с толку вот это: 9. После того как все исключения обработаны, если п.11.3 отработал и возвратил нам имя, мы должны удалить запись для этого имени из connectionMap и разослать всем остальным участникам сообщение с типом USER_REMOVED и сохраненным именем.
S3R3N1TY37 уровень, Санкт-Петербург
13 марта, 09:43
Исключения можно обработать в одном блоке  catch
catch (IOException | ClassNotFoundException e)
Используем  try () - с ресурсами Удаляем из connectionMap уже после закрытия соединения с сервером, то есть после выхода из Try - Catch.
Николай31 уровень
23 апреля, 12:50
сделал, удаляя из connectionMap внутри try-with-resources, Валли принял) кетчи писал раздельные, спасибо за идею!
Сергей41 уровень, Москва
19 июня, 06:21
Спасибо за подсказку, валик принял только try () - с ресурсами
Vitaly Khan37 уровень
10 марта, 01:01
очень полезно попробовать решить задачу, не читая условия. достаточно прочесть "Пришло время написать главный метод класса Handler". большую часть вполне по силам сделать студентам самим. очень систематизирует в голове все, что уже сделано и для чего сделано. вообще, в этих задачах слишком часто разжевывается условие так, что думать студенту совсем не надо. а косяки валидатора наоборот отвлекают внимание от самого главного и отбирают время. неудивительно, что при таком подходе большинство полностью решивших задачу не может самостоятельно даже близко повторить решение.
Дмитрий К.33 уровень, Иркутск
4 марта, 09:09
интересно что валидатор требует новый метод notifyUsers(), хоть в описании про него не слово ...
Vitaly Khan37 уровень
10 марта, 02:02
какой еще новый метод? зачем?
Vladislav Moiseev41 уровень, Санкт-Петербург
25 февраля, 16:19
у кого проблема с долгим выполнением программы, уберите везде бесконечные циклы и поставьте вместо них for 1..10
Николай Малинчик41 уровень, Санкт-Петербург
7 февраля, 15:55
getRemoteSocketAddress запилил в try/catch и не проходило, пока до него не вынес(