6

您能告诉我如何使用 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

请解释一下,如果不难举个例子。谢谢!

4

2 回答 2

9

从 zmq套接字手册Socket.bind

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

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

连接的另一端应该使用Socket.connect类似于socket.connect("tcp://remoteip:5000")连接到另一端监听的 URL。

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

于 2013-01-24T21:41:30.393 回答
3

不要忘记检查防火墙。它应该是不活动的。

此外,您可以通过以下方式检查服务器是否可访问telnet

telnet serverIPaddress serverPortNo
于 2015-02-04T15:57:30.043 回答