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