Qt/C++. Object Recognition and Protocol TCP/IP.
В статье описана реализация протокола TCP/IP в составе программы "Objects Detection".
Как этот протокол используется в программе распознавания объектов?
Протокол TCP/IP применяется для передачи клиентам изображений и имен их файлов, обнаруженных "Objects Detection" объектов.
Программа выполняет функции источника и сервера для передачи/приема.
В состав загрузочного zip пакета включен проект Client_TCP, содержащий несколько клиентов
для работы с программой "Objects Detection".
Клиенты принимают от программы "Objects Detection" изображения (QByteArray)
и имена их файлов (QString), сохраняют изображения на локальных дисках в формате jpg файлов, выводят изображения на экран.
Взгляните на рисунок, содержащий несколько клиентов. Внешне их дизайн очень схож с дизайном программы "Objects Detection". Однако различие состоит в том,
что клиенты не имеют видеокамер, все данные принимаются ими от "Objects Detection" посредством протокола TCP/IP.
Каждый клиент имеет возможность считать со своего локального диска любой файл с изображением (форматов jpg, gif, *) и отправить его другим клиентам.
Клиенты примут этот файл, сохранят его на своих дисках и выведут изображение на экран.
Другими словами, клиенты объединены между собой посредством программы "Objects Detection" в Chat.
Текущую версию программы "Objects Detection" определим как 1.1. В этой версии введен асихронный режим передачи данных для клиентов всех типов
(FTP, MQTT, TCP/IP, SMTP, ...). Этот режим позволяет в несколько раз уменьшить время доставки данных клиентам.
Конечно остается возможность установки и синхронного режима передачи данных.
Это тринадцатая статья из цикла "Real-Time Object Recognition".
Первые двенадцать опубликованы здесь:
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12.
При разработке программ "Objects Detection" использовались:
1. Программа "Objects Detection" выполняет следующие функции:
2. Как реализован протокол TCP/IP в программе "Objects Detection".
Реализация протокола TCP/IP находится в классе "TcpServer". Каждый socket вновь подключаемого клиента записывается в вектор
QVector <QTcpSocket*> socketVector командой socketVector.push_back(socket).
При отключении клиента его socket удаляется из вектора командой socketVector.remove(i). Прием и передача блоков данных реализованы
по стандартной схеме.
Асинхронный режим передачи для всех Activity определяется в конструкторе класса "MainWindow" устанавкой значения "0" в переменную
timer_interval_main(0). Любое другое значение определяет синхронный режим передачи данных с
установленным интервалом. Например, значение в переменной timer_interval_main(500) означает, что данные будут передаваться с интервалом
в 500 миллисекунд.
3. Клиенты протокола TCP/IP .
Для тестирования связки клиент-сервер протокола TCP/IP написан отдельнный проект Client_TCP. В состав проекта включено несколько клиентов.
Поcле компиляции, сборки и запуска этого проекта, все клиенты будут пытаться автоматически подключиться к серверу, к тому, что находится в программе "Objects Detection".
Если программа "Objects Detection" запущена и открыт режим работы с видеокамерой, клиентам удастся подключиться, после этого они будут полностью готовы к работе. При поступлении
с сервера информации она будет принята и отображена клиентами. В строке состояния клиентов будет указано количество принятых изображений.
Любой клиент имет возможность считать со своего локального диска файл изображения и передать его другим клиентам. Ниже показан пример отображения клиентами получаемых изображений.
Полное описание исходного текста программ "iOS MQTT Client", "macOS MQTT Client", "Client TCP", "Objects Detection" предоставляется платно в файлах pdf или odt при запросе
через e-mail: veresov@jdesign.ru.
|