Чат (11)

  • 28
  • Недоступна
Пришло время написать главный метод класса Handler, который будет вызывать все вспомогательные методы, написанные ранее. Реализуем метод void run() в классе Handler. Он должен: 1) Выводить сообщение, что установлено новое соединение с удаленным адресом, который можно получить с помощью метода getRe
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (147)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Алексей Чумаков30 уровень, Ногинск
6 июля, 12:23
Мучался с: Метод run() должен корректно обрабатывать исключения IOException и ClassNotFoundException. Оказалось в конце прежде чем удалить юзера нужно было проверить что его имя не null
midicq199332 уровень
5 июля, 18:36
Просто оставлю это здесь...(помогло, то что когда проверял код - перечитывал условия раз так 20)
Pavel Kuzmin32 уровень, Москва
18 июня, 15:14
не проходило по 1му пункту. Вынес оповещение из try в начало и все приняло. Видимо строгая привязка к последовательности: сначала оповещение, потом инициализация connection
Фёкла31 уровень, Москва
27 июля, 08:59
Спасибо, помогло)))
Sergey Smirnov31 уровень, Alicante
12 июня, 11:22
Если не проходит последний пункт требований, то условия 9 и 10 необходимо выполнять в блоке try.
Секлета28 уровень, Одесса
12 июня, 08:58
так закодилась, что в первом пункте сделала ConsoleHelper.writeMessage(new Message(MessageType.TEXT....) 5 попыток. При том что валидатор данный пункт пропускал, остальные 4 ни в какую....
Kex38 уровень, Тольятти
26 мая, 09:28
почему так принял
ConsoleHelper.writeMessage("Было установленно соеденение с удаленным адрессом: " + socket.getRemoteSocketAddress());
а так не принял
ConsoleHelper.writeMessage("Было установленно соеденение с удаленным адрессом: " + connection.getRemoteSocketAddress());
в первом случае был внутри блока try-resurse а во втором случае в не блока, но мы уже не наш метод делегированный использовали а на прямую через сокет. По мне так бред
Не ну это не серьезно31 уровень, Киев
16 мая, 19:02
Lol.. хотел написать красивее, вот так:
sendBroadcastMessage(new Message(MessageType.USER_REMOVED, name + " покинул чат"));
В итоге не принял.. просто из за того, что ему нужно вот так:
sendBroadcastMessage(new Message(MessageType.USER_REMOVED, name));
Видимо это потом на стороне клиента будет анализироваться пришедшее сообщение и выводиться корректно..
terrorist8628 уровень, Николаев
17 июля, 09:04
Тоже на этом попался. Уже даже пытался удаление юзера из чата в блок finally впихнуть. 4 попытки потратил, пока Ваш коммент не прочел.
Григорий31 уровень, Днепр
8 мая, 21:09
если у кого будет такая же беда: 9 и 10 пункт запихните в try не надо в finally и после него
ram097335 уровень, Набережные Челны
30 марта, 07:51
1) в serverHandshake в while (message == null || message.getType() != MessageType.USER_NAME || message.getData().isEmpty() ||) убрал вроде безобидную проверку message == null || иначе валидатор был в бесконечном цикле (Подсмотрел тут ниже, иначе бы не понял что ему не нравится и почему) 2) валидатору не понравилось как я выводил getRemoteSocketAddress() методом тыка подогнал что ему было нужно
Евгений Уварцев37 уровень, Жопинск
27 марта, 06:07
Потратил 15 попыток на то , что не проходило по пункту serverMainLoop , долго не мог понять в чем дело , отказалось что валику не нравится реализация этого метода через рекурсию , (хотя в предыдущей задаче пропустил) в итоге поменял рекурсию на while(true) и все прошло
Dmitrii37 уровень, Бишкек
29 марта, 11:35
Бесконечный цикл через рекурсию приведет к StackOverflowError.