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

Conversation

antropovaa
Copy link

Лабораторная работа №1а

Запускается из командной строки:

  • сервер: python server.py
  • клиент: python client.py

Выход из чата по сообщению #quit

остальную часть отчета допишу чуть позже :)

@wrbbz wrbbz added Первая лабораторная TCP чат Доработать отчёт Отчёта нет или он не соответствует требованиям labels Nov 26, 2020
@wrbbz
Copy link
Contributor

wrbbz commented Dec 9, 2020

  • Маппинг на локалхост сковывает руки и не дает подключиться внешним узлам
  • Невозможность выбора порта при запуске. Если данный порт (5555) занят чем-то другим, ПО не запустится
  • Завершение сервера вешает терминал с запущенным клиентом
  • Нехватает определения написания сообщения (какой-нибудь идентификации о том, что находишься в режиме написания сообщения, а не повис)
  • Btw, при написании инструкции по запуску лучше указывать версию питона (т.к., например, в Ubuntu до сих пор команда python указывает на второй питон)

В целом, для того, чтоб принять данную лабу будет достаточно написать отчет с описанием протокола

@antropovaa
Copy link
Author

antropovaa commented Dec 16, 2020

Лабораторная работа 1а

Инструкция по запуску

Запускается из командной строки:

  • сервер – python3 server.py
  • клиент – python3 client.py [ip] [port]

Описание протокола

Формат пакетов от клиента

Length of message Message

Формат пакетов от сервера

Length of nickname Nickname Length of message Message

Длина сообщения и имени – 5 байт, она задается непосредственно в коде. Соответственно, максимально доступно для них 2^40 символов.

При начале работы клиента запрашивается никнейм. Далее передается на сервер, где запоминается. Затем клиент получает возможность отправлять произвольные сообщения, отправляются пакеты с их текстом. После их получения сервер определяет никнейм пользователя и формирует пакет для вещания на других клиентов, который содержит и сообщение, и ник. На стороне клиента из этого пакета выбираются необходимые данные и формируется строка следующего формата:
<HH:MM> [nickname] message

Осуществляется передача отдельных данных (а не целой строки), поэтому на стороне клиента может быть выполнена своя интерпретация отображения чата путем выделения необходимой информации из полученного пакета.

При подключении и отключении клиентов формируются соответствующие сообщения типа:
<HH:MM> [nickname] joined
<HH:MM> [nickname] left

@antropovaa
Copy link
Author

@wrbbz, изменила немного формат пакетов и попыталась учесть часть замечаний

@wrbbz
Copy link
Contributor

wrbbz commented Dec 23, 2020

@wrbbz, изменила немного формат пакетов и попыталась учесть часть замечаний

Подключение к 0.0.0.0, все же, лучше чем к локальному адресу. Но я топлю за конфигурирумость пользователем.
Не требует исправлений. Так, на будущее

@wrbbz wrbbz closed this Dec 23, 2020
@wrbbz wrbbz added Зачтено and removed Требуется доработка Доработать отчёт Отчёта нет или он не соответствует требованиям labels Dec 23, 2020
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.

2 participants