Ошибка ZeroMQ epgm в Linux: протокол не поддерживается

Я пытаюсь многоадресно использовать zmq на Linux. Моя программа умирает на линии, которая пытается привязаться к адресу epgm.

Я запустил точно такой же код в VC++, когда я запускал клиент и сервер на одном хосте, и он работал нормально. Однако из того, что я читал другими программистами на этом сайте, zmq не поддерживает петлевые функции, поэтому я не могу публиковать и получать сообщения на том же хосте, используя epgm.

Я переместил программу в окно Linux, и я получил ошибку. Вот код и ошибка, знаете ли вы случайно, связана ли эта ошибка со мной, используя неверный IP для Linux?

zmq::context_t context( 1 );
zmq::socket_t publisher( context, ZMQ_PUB );

publisher.bind( "epgm://224.0.0.1:5555" );

Строка ошибки - это линия привязки.

Ошибка:

terminate called after throwing an instance of 'zmq::error_t'
what():  Protocol not supported

Спасибо за помощь

1 ответ

Я нашел решение этой проблемы.

Очевидно, что когда вы собираетесь использовать zmq для многоадресных рассылок (pgm или epgm), вы должны запустить./configure с включенным pgm, а затем выполнить make after.

Для этого требуется libpgm

При просмотре моего извлеченного файла tar zmq tar в папке /foreign/ есть файл libpgm tar.

Так что я просто побежал:

./configure --with-pgm=libpgm-5.2.122~dfsg

make

sudo make install

Это решило проблему, и теперь я могу связываться с помощью epgm.

(очевидно, что версия libpgm будет версией в вашей папке zmq)

Другие вопросы по тегам