ZeroMQ,如何连接外部tcp套接字?

时间:2013-01-24 21:30:26

标签: distributed zeromq pyzmq

您能否告诉我如何使用一些通用套接字在不同服务器上的两个程序之间发送消息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

请解释,如果不难给出一个例子。 THX!

2 个答案:

答案 0 :(得分:9)

来自Socket.bind上的zmq socket manual;

  

这会导致套接字侦听网络端口。此连接另一端的套接字将使用Socket.connect(addr)连接到此套接字。

换句话说,这将告诉0mq监听本地端口的传入连接;你应该使用socket.bind("tcp://0.0.0.0:5000")之类的东西来监听端口5000上所有机器的IP地址。

连接的另一端应使用Socket.connect,其网址类似于socket.connect("tcp://remoteip:5000"),以便连接到另一方听。

从错误消息中可以看出,您正尝试bind到远程地址,而不是绑定到本地并连接到远程地址。

答案 1 :(得分:2)

别忘了检查防火墙。它应该是不活动的。

此外,您可以使用 telnet 检查服务器是否可访问:

telnet serverIPaddress serverPortNo