6

共通のソケットを使用して、異なるサーバーにある 2 つのプログラム間で 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ようなURLで使用する必要があります。socket.connect("tcp://remoteip:5000")

bindエラーメッセージから、ローカルにバインドしてリモートに接続するのではなく、リモートアドレスに接続しようとしているように見えます。

于 2013-01-24T21:41:30.393 に答える
3

ファイアウォールを確認することを忘れないでください。非アクティブにする必要があります。

また、次のコマンドを使用して、サーバーにアクセスできるかどうかを確認できますtelnet

telnet serverIPaddress serverPortNo
于 2015-02-04T15:57:30.043 に答える