Skip to content
This repository has been archived by the owner on Sep 9, 2021. It is now read-only.

Nikitina Daria, 70203, Lab3 server + client #169

Closed
wants to merge 1 commit into from

Conversation

dashuleka01
Copy link

@dashuleka01 dashuleka01 commented Apr 3, 2021

Лабораторная работа №3 server + client

Лабораторная работа написала на языке C# с использованием .Net Core 3.1.0. Запускается на Windows.
Вариант №16: Система голосования/рейтингов

Инструкция по использованию

Для запуска программы необходимо ввести команду dotnet run Voting в командной строке. Далее программа предлагает пользователю выбрать роль клиента или сервера. Для подключения сервера необходимо ввести server, для подключения клиента -- client.

Доступные команды

Code Command Comment
1 GET Запрос / Выдача всех рейтингов или конкретного рейтинга
2 CREATE Создание нового рейтинга
3 DELETE Удаление рейтинга
4 ADD Добавление новой альтернативы в рейтинг
5 OPENCLOSE Открытие / закрытие рейтинга
6 VOTE Проголосовать
7 ACK Подтверждение действия
8 ERROR Сообщение об ошибке

GET

Подкоды для команды GET:
1 - ALL - все рейтинги
2 - SPECIFIC - конкретный рейтинг

Все рейтинги

Запрос клиента:

2 bytes 2 bytes
Opcode = 1 Subcode = 1

Ответ сервера:

2 bytes 2 bytes 4 bytes n bytes 1 byte 4 bytes n bytes 1 byte ...
Opcode = 1 Subcode = 1 Voting ID Voting Name 0 Voting ID Voting Name 0 ...

Конкретный рейтинг

Запрос клиента:

2 bytes 2 bytes 4 bytes
Opcode = 1 Subcode = 2 Voting ID

Ответ сервера:

2 bytes 2 bytes 4 bytes 4bytes 4 bytes n bytes 1 byte 4 bytes 4 bytes n bytes 1 byte ...
Opcode = 1 Subcode = 2 Voting ID Variant ID Votes Variant Name 0 Variant ID Votes Variant Name 0 ...

CREATE

Запрос клиента:

2 bytes n bytes 1 byte 4 bytes 4 bytes
Opcode = 2 Voting Name 0 Max Count of Variants Max Count of Votes per 1 time

Ответ сервера:
В случае создания рейтинга

2 bytes 2 bytes
ACK Opcode = 7 Opcode of operation (CREATE) = 2

DELETE

Запрос клиента:

2 bytes 4 bytes
Opcode = 3 Voting ID

Ответ сервера:
В случае удаления рейтинга

2 bytes 2 bytes
ACK Opcode = 7 Opcode of operation (DELETE) = 3

ADD

Запрос клиента:

2 bytes 4 bytes n bytes 1 byte
Opcode = 4 Voting ID Variant Name 0

Ответ сервера:
В случае добавления варианта

2 bytes 2 bytes
ACK Opcode = 7 Opcode of operation (ADD) = 4

OPENCLOSE

Запрос клиента:

2 bytes 4 bytes 1 byte
Opcode = 5 Voting ID open = 1, close = 0

Ответ сервера:
В случае удачного открытия/закрытия рейтинга

2 bytes 2 bytes
ACK Opcode = 7 Opcode of operation (OPENCLOSE) = 5

VOTE

Запрос клиента:

2 bytes 4 bytes 4 bytes 4 bytes
Opcode = 6 Voting ID Variant ID Count of Votes

Ответ сервера:
В случае удачного голосования

2 bytes 2 bytes
ACK Opcode = 7 Opcode of operation (VOTE) = 6

ERROR

Если запрос клиента не может быть выполнен сервер посылает уведомление об ошибке

2 bytes n bytes 1 byte
Error Opcode = 8 Message 0

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Зачтено Третья лабораторная Задания из методички
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants