2013-01-24 105 views
5

您能告诉我如何使用一些常用套接字在位于不同服务器上的两个程序之间发送消息ZeroMQ? 与所有本地套接字程序的作品,但我不明白他们如何传播到不同的地方。因为攀爬错误:ZeroMQ,如何连接到外部tcp socket?

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 

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

+0

你救了我的时间再次问这个问题!谢谢 –

回答

8

来自zmq socket manual on Socket.bind;

This causes the socket to listen on a network port. Sockets on the other side of this connection will use Socket.connect(addr) to connect to this socket.

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

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

从错误消息看来,您正在尝试将bind设置为远程地址,而不是绑定到本地并连接到远程。

2

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

此外,您还可以检查知道,如果服务器可以访问或不符合telnet

telnet serverIPaddress serverPortNo