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