Проект решает задачу передачи с клиента на сервер двух типов данных:
- "human readable" данные (фактически, файлы *.json);
- данные в бинарном виде (сериализованные из POD-структур).
Таким образом, можно поочередно передать произвольное количество информационных объектов обоих типов и посмотреть на сервере время, затраченное на разбор всего полученного сообщения, и среднее время сериализации одного информационного объекта.
Проект состоит из двух графических приложений:
- clientDataSender (tcp-клиент);
- serverDataReceiver (tcp-сервер);
Приложения собираются стандартным образом:
qmake && make
Зависимости:
- гарантированно подойдут Qt 5.7.1 или Qt 5.15.2 (возможно, подойдут и более ранние версии, например Qt5.3.*);
- Boost.PropertyTree (header-only library from boost).
На клиенте предусмотрена возможность ввода сетевых настроек.
Введенные сетевые настройки сохраняются в файле settings.ini.
На сервере предусмотрено поле для ввода номера tcp-порта (после смены порта необходимо перезапустить tcp-сервер
с помощью кнопки "Активировать tcp-сервер"). Default-значение порта сервера установлено в исходном коде, конфига нет.
Сервер работает как через IP-адрес интерфейса, так и через localhost.
Сервер поддерживает возможность приема данных от нескольких клиентов. Текущее количество обрабатываемых
соединений - 3. Его можно изменить в исходном коде (значение передается в конструктор класса TcpServer).
- Световой индикатор, изменяющий цвет при подключении клиента, не способен отразить количество подключений. Нужно что-то придумать.