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

Антропова Анна, 3530901/70201, lab1_b #64

Closed
wants to merge 3 commits into from

Conversation

antropovaa
Copy link

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

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

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

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

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

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

Length of message Message

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

Length of nickname Nickname Length of message Message

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

Используются неблокирующие сокеты:
client_socket.setblocking(False)

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

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

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

@wrbbz
Copy link
Contributor

wrbbz commented Jan 6, 2021

  • При отключении сервера, в клиенте спамятся пустые сообщения
  • Выход из клиента через KeyboardInterrupt не представляется возможным

@antropovaa
Copy link
Author

Поправила

@wrbbz
Copy link
Contributor

wrbbz commented Jan 10, 2021

Добавить проверку на уникальность ника и лаба зачтена

@antropovaa
Copy link
Author

Добавила таким образом
image

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