ZeroMQ PGM Multicast не поддерживает обработку ответов со стороны приложения?

Я сделал пример приложения ZeroMQ PGM для многоадресной рассылки, и он работает нормально.

Но обработка ответа не работает. Это правильный подход или нет?
Если да — как сделать ответ от Получателя Отправителю?

Отправитель:

std::string msg = "hello";
socket->send(msg.c_str(),msg.length(),0);
socket->recv(reply);                          // Can we do this?

Получатель:

char msg[100] = {0};
std::string reply = "Succ";
socket->recv(msg,100,0);
socket->send(reply.c_str(),reply.length(),0); // Can we do this?

1

Решение

Да нет!

Да, ZeroMQ pgm:// Транспортный класс не поддерживает это.

Нет, мы не можем этого сделать. Ни .send() на SUB сторона, или .recv() на PUB боковая сторона.

В спецификации ZeroMQ API написано:

pgm а также epgm транспорт может быть использован только с ZMQ_PUB а также ZMQ_SUB типы сокетов.

ZMQ_SUB архетип не допускает .send() метод.
ZMQ_PUB архетип не допускает .recv() метод.

Что и требовалось доказать


Нужно добавить еще один сокет, скорее всего, используя tcp:// транспортный класс, по которому может иметь место обратная связь.

введите описание изображения здесь

ZeroMQ обратный .bind()/.connect() Механика — это обычная практика для этого в неструктурированной, формально неконтролируемой / неконструктивной распределенной вычислительной инфраструктуре с политикой конфигурации.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]