Лабораторная работа 6. Сетевое программирование

       Напишите программу, реализующую заданный сетевой сервис. Она должна уметь одновременно обслуживать большое количество клиентов. Используйте две технологии программирования асинхронных сетевых сервисов из списка: одну - на основе TCP, другую - на основе веб-сокетов (пары технологий у всех в группе должны быть разными; спросите преподавателя, не занята ли выбранная вами пара):
  1. C++ threads с блокирующими сокетами (скачать пример)
  2. C++ poll с неблокирующими сокетами (скачать пример)
  3. Ruby (скачать пример TCP;       скачать пример на основе веб-сокетов)
  4. Python (скачать пример TCP;       скачать пример на основе веб-сокетов )
  5. Java Netty (скачать пример)
  6. Javascript Node.js (скачать пример TCP;      скачать пример на основе веб-сокетов)
  7. Php (скачать пример TCP;      скачать пример на основе веб-сокетов)
  8. Golang (скачать пример TCP, threads)
  9. Rust (скачать пример TCP, threads, в примере не реализована конвейеризация)
  10. Haskell (скачать пример TCP, threads)
  11. Kotlin (скачать пример TCP;      скачать пример на основе веб-сокетов)
  12. Scala (скачать пример TCP)
  13. Другую, без примера (но одну) для протокола CALC из лекции или вебсокет-сервер на языке программирования, для которого отсутствует пример
        Указанные технологии нужно применять только при написании программы-сервера. В качестве программы-клиента используйте telnet для случая TCP-сервера и эту веб-страничку для случая вебсокет-сервера.
        Во всех заданиях клиенты подключаются к серверу, общаются продолжительное время: посылают запросы, получают ответы и отключаются. Реализуйте возможность конвейеризации запросов: отправки клиентом еще одного или нескольких запросов до получения ответа на предыдущий.

        Придумайте и опишите формат пересылаемых клиентами сообщений и ответов сервера на эти сообщения (т.е. протокол).

        Ваш вариант задания async_service.txt находится в вашей папке на сервере stud.mmcs.sfedu.ru.

Протестируйте ваши программы на большой нагрузке и запишите в отчет статистику: сколько максимально запросов в секунду смог обработать ваш сервис (3 бонусных балла). Программа-клиент должна быть максимально простой и быстрой (C++) для тестирования сервера под большой нагрузкой  (скачать пример клиента).