Протокол команд сервера - gogafefe/StAlGoLM GitHub Wiki
Сервер принимает обычный TCP-поток байт. Одна команда — одна текстовая строка, за которой обязательно следует байт-разделитель 0x01 — без него сервер не поймёт, что сообщение закончилось (подробнее — в Архитектура).
При подключении сервер сразу присылает приветствие:
Hello, World!!! I am echo server!
| Команда | Что делает |
|---|---|
reg <login> <password> <email> [role] |
Регистрация. role необязателен (по умолчанию user); допустимые роли: user, moderator, admin
|
auth <login> <password> |
Вход. Ответ — auth+ <role> или auth-
|
logout |
Выход из аккаунта на этом соединении |
whoami |
Показать логин/email/роль текущего пользователя |
del [login] |
Удалить аккаунт. Без аргумента — свой; с аргументом — только у admin |
role <login> <newRole> |
Сменить роль пользователю (только admin) |
users |
Список всех пользователей (moderator/admin) |
stats |
Общая статистика сервера (moderator/admin) |
| Команда | Что генерирует |
|---|---|
task1 <1-40> |
Сравнение методов трапеций и Симпсона |
task2 <1-10> |
Метод Ньютона — выбор верного x₁ из 4 вариантов (вариант №6, см. Task2 — метод Ньютона) |
task3 <1-10> |
Метод половинного деления — выбор приближённого корня из 4 вариантов (вариант №3, см. Task3 — метод половинного деления) |
task4 <1-40> |
Сумма двух чисел (большие) |
mystats [1-4] |
Личная статистика — по одному заданию или по всем |
Как отвечать: после taskN <номер> следующим сообщением отправляется просто число — ответ.
-
task1:1(трапеции точнее) или2(Симпсон точнее) -
task2: номер (1–4) правильного варианта x₁ -
task3: номер (1–4) верного приближённого корня -
task4: посчитанная сумма
За верный ответ — +1 к статистике, за неверный — -1.
> reg fedor pass123 [email protected]
< reg+
> auth fedor pass123
< auth+ user
> task2 1
< === Задание Task2 (вариант №6 из списка) #1 ===
f(x) = 1*x^2 + 7*x + 7
x0 = 1.0000
f(x0) = 15.0000
f'(x0) = 9.0000
Метод Ньютона: x1 = x0 - f(x0)/f'(x0)
Какое из значений x1 правильное?
1) x1 = -0.6667
2) x1 = 2.6667
3) x1 = 1.6667
4) x1 = 0.4000
> 1
< Верно! StatisticTask2[1] += 1 (текущее значение: 0)