/desktop_tcp_server

tcp сервер, который распознаёт заданный формат данных и отображает его в требуемом формате

Primary LanguagePython

desktop_tcp_server

tcp сервер, который распознаёт заданный формат данных и отображает его в требуемом формате

Тестовое задание

Необходимо сделать tcp сервер, который распознаёт заданный формат данных и отображает его в требуемом формате.

Обязательна запись данных во внешний файл.

Интерфейс и способ отображения на выбор разработчика.

Формат данных BBBBxNNxHH:MM:SS.zhqxGGCR

Где BBBB - номер участника 
x - пробельный символ 
NN - id канала 
HH - Часы 
MM - минуты 
SS - секунды 
zhq - десятые сотые тысячные 
GG - номер группы 
CR - «возврат каретки» (закрывающий символ) 

Пример данных: 0002 C1 01:13:02.877 00[CR]

Выводим

«спортсмен, нагрудный номер BBBB прошёл отсечку NN в «время»" до десятых, сотые и тысячные отсекаются. Только для группы 00.

Для остальных групп данные не отображаются, но пишутся в лог полностью.

Язык Python, версия не ниже 3.2 Передача данных должна поддерживаться с помощью telnet клиента.

Запуск

Выполнял задание на Mac OS, Python 3.9, PyQt5 и стандартных библиотеках.

  1. Установить виртуальное окружение и пакеты из requirements.txt

  2. Проверить/изменить настройки в settings.py:

  • IP адреса и номер порта, название файлов для логов
  1. Запустить сервер:

python main.py

Тестирование

Запустить параллельно с сервером тестового клиента

python test_gui_client.py

или через telnet

Комментарий

В задании не указано на обработку ошибок.

  • принял решение сделать обработку и возвращать статус OK, если все в порядке, в противном случае - KO с сообщением о типе ошибки.

Так же для удобства в дополнительном поле вывожу содержимое сохраненного файла с полученными данными, только в обратном порядке, чтобы не прокручивая видеть последнее.

Не оптимальная реализация запуска сервера в фоновом потоке - при наличии свободного времени переделаю.