Skip to content

Commit ceb8ffe

Browse files
authored
Update README.md
1 parent 81d74c7 commit ceb8ffe

1 file changed

Lines changed: 47 additions & 2 deletions

File tree

README.md

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,47 @@
1-
# Lab6UDP
2-
Лабораторная работа №6(Протокол UDP)
1+
# Разделить программу из лабораторной работы №5 на клиентский и серверный модули. Серверный модуль должен осуществлять выполнение команд по управлению коллекцией. Клиентский модуль должен в интерактивном режиме считывать команды, передавать их для выполнения на сервер и выводить результаты выполнения.
2+
3+
## Разработанная программа должна удовлетворять следующим требованиям:
4+
5+
* Операции обработки объектов коллекции должны быть реализованы с помощью Stream API с использованием лямбда-выражений.
6+
* Объекты между клиентом и сервером должны передаваться в сериализованном виде.
7+
* Объекты в коллекции, передаваемой клиенту, должны быть отсортированы ***по местоположению***
8+
* Клиент должен корректно обрабатывать временную недоступность сервера.
9+
* Обмен данными между клиентом и сервером должен осуществляться ***по протоколу UDP***
10+
* Для обмена данными на сервере необходимо использовать ***датаграммы***
11+
* Для обмена данными на клиенте необходимо использовать ***сетевой канал***
12+
* Сетевые каналы должны использоваться ***в неблокирующем режиме***.
13+
14+
## Обязанности серверного приложения:
15+
16+
* Работа с файлом, хранящим коллекцию.
17+
* Управление коллекцией объектов.
18+
* Назначение автоматически генерируемых полей объектов в коллекции.
19+
* Ожидание подключений и запросов от клиента.
20+
* Обработка полученных запросов (команд).
21+
* Сохранение коллекции в файл при завершении работы приложения.
22+
* Сохранение коллекции в файл при исполнении специальной команды, доступной только серверу (клиент такую команду отправить не может).
23+
24+
## Серверное приложение должно состоять из следующих модулей (реализованных в виде одного или нескольких классов):
25+
26+
* Модуль приёма подключений.
27+
* Модуль чтения запроса.
28+
* Модуль обработки полученных команд.
29+
* Модуль отправки ответов клиенту.
30+
31+
Сервер должен работать в ***однопоточном*** режиме.
32+
33+
## Обязанности клиентского приложения:
34+
35+
* Чтение команд из консоли.
36+
* Валидация вводимых данных.
37+
* Сериализация введённой команды и её аргументов.
38+
* Отправка полученной команды и её аргументов на сервер.
39+
* Обработка ответа от сервера (вывод результата исполнения команды в консоль).
40+
* Команду save из клиентского приложения необходимо убрать.
41+
* Команда exit завершает работу клиентского приложения.
42+
43+
Важно! Команды и их аргументы должны представлять из себя объекты классов. Недопустим обмен "простыми" строками. Так, для команды add или её аналога необходимо сформировать объект, содержащий тип команды и объект, который должен храниться в вашей коллекции.
44+
45+
#### Дополнительное задание:
46+
47+
Реализовать логирование различных этапов работы сервера (начало работы, получение нового подключения, получение нового запроса, отправка ответа и т.п.) с помощью **Java Util Logging**

0 commit comments

Comments
 (0)