ZeroMQ, как подключиться к внешнему tcp сокету?

Подскажите, пожалуйста, как можно использовать для отправки сообщений ZeroMQ между двумя программами, расположенными на разных серверах, используя какой-то общий сокет? Со всеми локальными сокетами программа работает, но я не понимаю, как они распространяются в разные места. Потому что вылазит ошибка:

Traceback (most recent call last):
  File "/Users/*****/Projects/*****/workers/internal_links_parser.py", line 20, in <module>
    socket.bind("tcp://***.***.***.***:5000")
  File "socket.pyx", line 447, in zmq.core.socket.Socket.bind (zmq/core/socket.c:4312)
zmq.core.error.ZMQError: Can't assign requested address

Объясните, пожалуйста, а если не трудно, приведите пример. Спасибо!

2 ответа

Решение

Из руководства по сокету zmq Socket.bind;

Это заставляет сокет прослушивать сетевой порт. Сокеты на другой стороне этого соединения будут использовать Socket.connect(addr) для подключения к этому сокету.

Другими словами, это скажет 0mq прослушивать локальный порт для входящих соединений; вы должны использовать что-то вроде socket.bind("tcp://0.0.0.0:5000") прослушивать все IP-адреса машины через порт 5000.

Другая сторона соединения должна использовать Socket.connect с URL-адресом что-то вроде socket.connect("tcp://remoteip:5000") подключиться к другой стороне прослушивания.

Из сообщения об ошибке может показаться, что вы пытаетесь bind на удаленный адрес вместо привязки к локальному и подключения к удаленному.

Не забудьте проверить брандмауэр. Это должно быть неактивно.

Кроме того, вы можете проверить, если сервер доступен или нет telnet:

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