Ошибка 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)