ZeroMQ REP/REQ не работает между общедоступным IP-адресом и IP-адресом за NAT

Я хочу запустить пример zmq REP/REQ HelloWrold на двух разных машинах. Исходный код находится здесь: КЛИЕНТ: http://zguide.zeromq.org/cpp:hwclient СЕРВЕР: http://zguide.zeromq.org/cpp:hwserver

Я запускаю сервер на облачной машине с общедоступным IP-адресом и клиентом на своем ноутбуке, который находится за NAT. Я проверил, что адрес доступен (пингование IP-адреса) и порты открыты (используя netcat).

Таким образом, клиент отправляет сообщение, сервер получает его и отправляет ответное сообщение, используя тот же сокет, но клиент его не получает.

Если я запускаю этот пример локально или между двумя облачными машинами, расположенными в разных географических областях (с общедоступным IP-адресом), он работает.

Кто-нибудь знает, почему?


person Yuri    schedule 11.03.2013    source источник


Ответы (2)


Я заметил, что есть проблема с ubuntu (квантовым) ppa libzmq. Используя libzmq-3.2.2, взятую с веб-сайта, он работает правильно.

person Yuri    schedule 12.03.2013

Скорее всего, из-за несовместимости версий (было несколько альфа/бета-релизов с несовместимыми протоколами). Это вопрос часто задаваемых вопросов, см. http://www.zeromq.org/area:faq#toc6

person Pieter Hintjens    schedule 14.03.2013