Разработать консольное серверное приложение на языке С++ работающее в среде ОС LINUX на пользовательском уровне. Приложение должно генерировать для клиента 3 последовательности, каждая из которых представляет собой целочисленный неотрицательный 64-х битный счетчик. Для каждой подпоследовательности начальное значение и шаг между двумя соседними значениями задается клиентом (пользователем) произвольно. Формат задания параметров – простой текст в tcp/ip сокет (для проверки используется telnet-клиент).
1 seq1 xxxx yyyy (задать начальное значение = xxxx и шаг = yyyy для первой подпоследовательности);
2 seq2 xxxx yyyy (задать начальное значение = xxxx и шаг = yyyy для второй подпоследовательности);
3 seq3 xxxx yyyy (задать начальное значение = xxxx и шаг = yyyy для третьей подпоследовательности);
4 export seq - выдавать в сокет клиенту сгенерированную последовательность.
1 Если в командах 1, 2, 3 любой из параметров (начальное значение и/или шаг) будет указан как = 0, то программа не должна генерировать данную последовательность;
2 При переполнении счетчика подпоследовательность должна начинаться сначала (с начального заданного значения xxxx);
3 Для удобства визуализации результата использовать текстовое представление сгенерированных чисел (для отображения в telnet-клиенте);
4 Программа не должна аварийно завершать работу в случаях некорректно введенных параметров, аварийного завершения работы клиента и т. д;
5 Для разработки использовать только стандартные возможности библиотеки языка C++ (11,14,17), проект должен просто собираться (make/cmake/...);
6 Приложение должно быть многопоточным с использованием общего ресурса (единого хранилища настроек клиентов);
7 С каждым пользователем ведётся обособленный диалог (пользователи не знают о действиях друг друга);
8 По возможности использовать шаблоны проектирования;
9 Комментарии в коде приветствуются;
10 Прежде чем сдавать тестовое, проверьте и протестируйте у себя все пункты.
Примеры входных и выходных данных Необходимо сгенерировать 3 следующие последовательности: Начальное значение 1, шаг 2: 1, 3, 5 … Начальное значение 2, шаг 3: 2, 5, 8 … Начальное значение 3, шаг 4: 3, 7, 11 … Команды:
seq1 1 2
seq2 2 3
seq3 3 4
export seq
последняя команда передаёт в сокет последовательность:
1 2 3
3 5 7
5 8 11
...
mkdir build && cd ./build
cmake -DCMAKE_BUILD_TYPE=Debug ../
или
cmake -DCMAKE_BUILD_TYPE=Release
cmake --build .
./server 8000