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

Пентегов Алексей, 203, Labs 3 #78

Closed
wants to merge 1 commit into from

Conversation

AlexPentagon
Copy link

@AlexPentagon AlexPentagon commented Jan 13, 2021

Проект: Информационная система (клиент) на языке С#

Запускаете сервер (Гусев Никита гр 203 ) и несколько(по желанию) клиентов
Вводите команды для работы с сервером. В консоли появляются подсказки команд.

Инструкция по сборке/установке

В папке debug -> bin есть .exe файл (если его не отфильтровал гитигнор)
можно собрать исполняемый файл из visual studio. Или через командную строку
c:\windows\Microsoft.NET\Framework\v3.5\bin\csc.exe /t:exe /out:MyApplication.exe MyApplication.cs ...
Описание используемого протокола.

Программа использует стандартный tcp протокол и осуществляет общение по Socket
Разработна структура пакета для обмена сообщениями между клиентом и сервером

"Структура пакета (запрос):
1 байт - порядковый номер метода (signed int)
2 байта - размер json'a (signed int)
N байт - json (utf-8)

Структура пакета (ответ):
2 байта - код ответа (signed int)
2 байта - размер json'a (signed int)
N байт - json (utf-8)

Body:
json в UTF-8, например: {
""section"":""фантастика"",
""subsection"":""супер-фантастика""
}

Пример:
код - 404

Что надо сделать URI Номер метода (1 байт) Метод Аргументы Примеры ответа
Передача пользователю списка текущих разделов системы /current-section 0 GET [
"Фантастика",
"Научпоп",
"Художественные"
]
Передача пользователю списка текущих статей раздела /current-articles 1 GET [
{
"author":"F",
"title":"Влияние ",
"description":"sdfsdfpososi"
},
{
"author":"Н",
"title":"vfтизм",
"description":"sdfsdfpososi"
}
]
Переход в конкретный раздел системы по запросу клиента /open-section 2 POST section: String subsection: String
Возврат на предыдущий уровень по запросу клиента /previous-section 3 GET
Передача пользователю конкретной статьи по названию /get-article-by-name 4 POST title: String {
"author":"н",
"title":"В",
"body":"skdsdjfklsdgkdfjdsklfjsdfpososi"
}
Передача пользователю всех статей текущего раздела, принадлежащих определенному автору /get-articles-by-author 5 POST author: String [
{
"author":"Н",
"title":"Вли",
"description":"sdfsdfpososi"
},
{
"author":"Н",
"title":"В",
"description":"sdfsdfpososi"
}
]
Приём от клиента новой статьи и сохранение в информационной системе /add-article 6 POST {
"section":"Section name",
"subsection":"Subsection name",
"article":{
"author":"Н",
"title":"Вм",
"body":"skdsdjfklsdgkdfjdsklfjsdfpososi"
}
}

Проект: Система Уведомлений (сервер) на языке С#

Запускаете сервер и несколько(по желанию) клиентов (Гусев Никита гр 203 )

Инструкция по сборке/установке

В папке debug -> bin есть .exe файл (если его не отфильтровал гитигнор)
можно собрать исполняемый файл из visual studio. Или через командную строку
c:\windows\Microsoft.NET\Framework\v3.5\bin\csc.exe /t:exe /out:MyApplication.exe MyApplication.cs ...
Описание используемого протокола.

Программа использует стандартный tcp протокол и осуществляет общение по Socket
Ведется учет событий добавленных пользователями и обрабатывается время, когда нужно отправлять уведомления.
Разработна структура пакета для обмена сообщениями между клиентом и сервером

"Структура пакета (запрос):
1 байт - порядковый номер запроса (signed int)
32 байт - токен (bytearray)
2 байта - размер json'a (signed int)
N байт - json (utf-8)

Структура пакета (ответ):
2 байта - код ответа (signed int)
2 байта - размер json'a (signed int)
N байт - json (utf-8)

Body:
json в UTF-8, например: {
""section"":""фантастика"",
""subsection"":""супер-фантастика""
}

Пример:
код - 404

Что делать Номер метода (1 байт) URI Метод Аргументы Примеры ответа
Передача пользователю списка событий 0 /events GET
[
{
"id":"0",
"name":"Гонки на Жигах",
"time":"152544235",
"period":"4",
"place":"Садовое кольцо"
"description":"Как токийски дрифт только круче"
"organizer":"Какой то чел на турбо пушке"
},
{
"id":"1",
"name":"Велопробег",
"time":"1527375523",
"period":"0",
"place":"Vrflкольцо"
"description":"Как токийски дрифт только круче"
"organizer":"Какой то чел на турбо пушке"
}
]
Добавить событие (с указанием типа и периода многократных событий) 1 /add-event POST "name":"Гонки на Жигах",
"time":"1242542410",
"period":"0",
"place":"Садовое кольцо"
"description":"Как токийски дрифт только круче"
"organizer":"Какой то чел на турбо пушке"
_
Удалить событие 2 /delete-event POST int: id
Подписать пользователя на событие 3 /subscribe POST int: id _
Отписать пользователя от события 4 /unsubscribe POST int: id _
Рассылка подписавшимся клиентам уведомлений о событиях 5 /notification GET -
Регистрация пользователя 6 /register POST credentials: String (формат "login:password" в base64) { "token" : "sgkkJGKSfmmdsfDFJf342" }

@ejiektpobehuk
Copy link
Contributor

Количество файлов в PR - ужс!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants