Skip to content

wolodyx/RemoteLamps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание "Фонарь"

Требуется написать управляемый по сети фонарь. Команды управления фонарь принимает от сервера фонаря. Необходимо реализовать простой сервер, который может отдавать команды фонарю и сам фонарь в виде клиентского приложения. Фонарь и сервер общаются по Протоколу Управления Фонарем, работающему поверх соединения TCP. Протокол Управления Фонарем (ПУФ) устроен следующим образом. Для изменения состояния фонаря сервер передает ему команду управления. Все команды кодируются в виде TLV (http://en.wikipedia.org/wiki/Type-length-value), при этом поле type имеет размер 1 байт, поле length — 2 байта и поле value — length байт. Все данные передаются по сети в Big Endian.

ПУФ версии 1 описывает три команды:

  • ON (включить фонарь): type = 0x12, length = 0
  • OFF (выключить фонарь): type = 0x13, length = 0
  • COLOR (сменить цвет): type = 0x20, length = 3, value интерпретируется как новый цвет фонаря в RGB.

Предполагается, что в будущих версиях ПУФ могут появляться новые команды, однако структура TLV останется неизменной.

Реализация фонаря должна удовлетворять следующим требованиям:

  1. При запуске через командную строку передаются хост и порт (по умолчанию хост 127.0.0.1, порт 9999), подсоединяться по TCP и после этого начать отрабатывать протокол управления.
  2. При получении данных от сервера фонарь собирает целые команды (type + length + value) и, если type известен, обрабатывает команду, иначе молча ее игнорирует.
  3. При получении команды ON фонарь включается (отрисовку фонаря оставляем на ваше усмотрение).
  4. При получении команды OFF фонарь выключается.
  5. При получении команды COLOR фонарь меняет цвет.
  6. При завершении работы фонарь корректно закрывает соединение с сервером.
  7. Реализация фонаря позволяет легко добавлять любые новые команды.

Проработанность обработки исключительных ситуаций (ошибки установления соединения, обрывы соединения) — на ваше усмотрение.

Технологические требования:

  1. Задание принимается в виде исходников, готовых к сборке с помощью cmake под Linux.
  2. Репозиторий с кодом должен быть доступен на Bitbucket или Github.

Сборка и запуск программы

Для сборки программы выполните следующие команды:

mkdir build
cd build
cmake ..
cmake --build .

В отдельных эмуляторах терминалов запустите сервер фонаря (./LampServer) и несколько фонарей (./Lamp). Наберите на сервере команду и нажмите Enter.

Формат команды имеет следующий вид: <Номер фонаря> <Имя команды> <Аргументы команды>. Например:

  • 1 on
  • 1 off
  • 2 color red
  • 1 color blue
  • 3 color green

About

Тестовое задание "Фонарь"

Resources

License

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors