This repository has been archived by the owner on Sep 9, 2021. It is now read-only.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Lab1a
Инструкция по использованию
Запустить в cmd.exe:
Описание используемого протокола
Имеется два типа пакетов: отправляемые от клиентов серверу и от сервера клиентам.
Формат пакетов, отправляемых от клиентов серверу:
Формат пакетов, отправляемых от сервера клиентам:
Размеры длин имен и сообщений фиксированные – 8 байт. Там содержатся числа, закодированные в utf-8, - длина имени и сообщения. Соответственно, максимально возможная длина сообщения - 10^8-1 символов. В случае ввода сообщения или имени пользователя длиной больше, чем 10^8-1 символов, будут получены только первые 10^8-1, а остальное отброшено. Размер времени тоже фиксирован, 5 байт, потому что мы используем только часы и минуты, разделенные двоеточием. Размеры настраиваются в самих файлах client.py и server.py с помощью соответствующей константы.
Первым сообщением после установления соединения является отправка клиентом имени пользователя, которое сервер запоминает, после чего отправляются сами сообщения. Таким образом, имя пользователя в дальнейшем отправлять не приходится и формат пакета от клиента серверу получается с длиной сообщения, временем и самим сообщением.
В случае с отправкой сообщения от сервера клиентам, передаётся: длина сообщения, время, длина имени, имя пользователя и само сообщение. Данные передаются всем клиентам, исключая самого себя.
Принцип работы получается следующим:
Сервер стартует, когда появляется сообщение: "Server is running".
Клиенты сначала вводят login, а затем, после сообщения: "Now you can start a conversation!" они могут начать общение.
Если клиент хочет выйти из чата, то нужно написать: "exit()"