Я сделал пример приложения 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?
Да, ZeroMQ pgm://
Транспортный класс не поддерживает это.
Нет, мы не можем этого сделать. Ни .send()
на SUB
сторона, или .recv()
на PUB
боковая сторона.
В спецификации ZeroMQ API написано:
pgm
а такжеepgm
транспорт может быть использован только сZMQ_PUB
а такжеZMQ_SUB
типы сокетов.
ZMQ_SUB
архетип не допускает .send()
метод.
ZMQ_PUB
архетип не допускает .recv()
метод.
Нужно добавить еще один сокет, скорее всего, используя tcp://
транспортный класс, по которому может иметь место обратная связь.
ZeroMQ обратный .bind()
/.connect()
Механика — это обычная практика для этого в неструктурированной, формально неконтролируемой / неконструктивной распределенной вычислительной инфраструктуре с политикой конфигурации.
Других решений пока нет …