На этом слайде мы создадим все методы универсального сокета в классе Phone. Протестируйте программу в разных режимах.
Придумайте, какую ещё клиент-серверную программу можно написать.
Дата отправки отчёта:
25 декабря 2018 г.
Задание выполнено: за
1 час. 46 мин.
Чему научился:
Сделал полный рефакторинг своей программы, созданной ранее. По методике, представленной в видео, сделал отдельный класс Phone, в который вынесена вся сетевая логика и работа с I/O потоками. Так получилось более логично и структурировано.
Что было сложным:
Добавил обработку исключения при делении на ноль для функции Calculate(), теперь в консоль выводится соответствующее сообщение. Но пока не понял, как реализовать, отправку этого сообщения клиенту.
Научился: объявили в классе Phone сервер и клиент, буферизированный приёмник данных reader и передатчик writer
Первый конструктор Phone (тот, у которого лишь один аргумент - порт) - создаёт серверный сокет. При создании экземпляра серверного сокета в аргументы передаётся порт в виде строки, поэтому его парсим в целое число методом Integer.parseInt()
ALT + ENTER - добавили трайкеч для отлова ошибок
Конструктор клиентского экземпляра сокета принимает уже два аргумента - сетевой адрес и номер порта
IntellijIDEA позволяет добавлять аргументы при запуске программы через пункт Edit Configuration - выпадающее меню у кнопки запуска с названием класса
Необходимости в добавлении \r в моём случае не было. Как в видео - в одну строку у меня не выводило при отсутствии \r и указанной лишь \n
И так и эдак перенос строки выполнялся успешно
CTRL + C - остановка Сервера в командной строке
Звездочка, используемая в качестве аргумента "умножение" должна быть заключена в скобки, иначе она воспринимается командной строкой как знак "ВСЕ"
Научился: Научился делать сложение через клиент. НО когда на сервере в терминале выставлять - или / или умножение, через клиент будет происходить "сложение"