2015-04-03 2 views
0

Я получил эту ошибку в моей программе:zmq.error.ZMQError: Нет такого устройства

Traceback (most recent call last): 
File "scriptA.py", line 17, in <module> 
socketPub.bind("tcp://localhost:%s"% portPub) 
File "socket.pyx", line 434, in zmq.backend.cython.socket.Socket.bind (zmq/backend/cython/socket.c:3928) 
File "checkrc.pxd", line 21, in zmq.backend.cython.checkrc._check_rc (zmq/backend/cython/socket.c:6058) 
zmq.error.ZMQError: No such device 

Это простой скрипт, я сделал, чтобы воспроизвести его:

import zmq 
import random 
import sys 
import time 

port = "5566" 
if len(sys.argv) > 1: 
    port = sys.argv[1] 
    int(port) 

portSub = "5556" 
context = zmq.Context() 

portPub = "5566" 
#contextPub = zmq.Context() 
socketPub = context.socket(zmq.PUB) 
socketPub.bind("tcp://localhost:%s"% portPub) 

socket = context.socket(zmq.SUB) 
socket.connect("tcp://localhost:%s"% portSub) 
socket.setsockopt(zmq.SUBSCRIBE,'') 


while True: 
    socket.send("BB", zmq.SNDMORE) 
    socket.send("16", zmq.SNDMORE) 
    socket.send("14", zmq.SNDMORE) 
    socket.send("11", zmq.SNDMORE) 
    socket.send("4") 
    time.sleep(3) 

Я хочу подписаться до одной точки и иметь возможность отправить другому. Является ли это возможным? 2 разных конца. A посылает на B и B отправляет C. C.

ответ

1

Попробуйте заменить localhost на 127.0.0.1.

Для получения дополнительной информации, ознакомьтесь с этим stackoverflow thread

Смежные вопросы