ZMQ:从不同的计算机接收
ZMQ : Receive from different computers
我有不同的计算机发布到主计算机。我有他们的 IP 地址列表。当列表中只有一个 IP 时,下面的代码可以正常工作,但是当有多个 IP 时,它就不起作用了。尝试“尝试,除了”时似乎在尝试连接到 ipList 中的第二个索引时失败。
PortNum = 6666
sockets = [len( ipList )]
pollers = [len( ipList )]
context = zmq.Context()
for nIdx in range( 0, len( ipList ) ):
ipAddr = ipList[nIdx]
sockets[nIdx] = context.socket( zmq.SUB )
sockets[nIdx].subscribe( '' )
strTCP = 'tcp://{0}:{1}'.format( ipAddr, usePortNum )
sockets[nIdx].connect( strTCP )
pollers[nIdx] = zmq.Poller()
pollers[nIdx].register(sockets[nIdx], zmq.POLLIN)
sockets = [len( ipList )]
这不会像您认为的那样创建长度为 len(ipList)
的列表。它创建一个包含单个条目的列表。因此,第二次通过循环,当您尝试访问列表中的下一项时,您会得到一个 IndexError
。
尝试这样的事情:
PortNum = 6666
sockets = []
pollers = []
context = zmq.Context()
for ipAddr in ipList:
strTCP = f'tcp://{ipAddr}:{usePortNum}'
socket = context.socket(zmq.SUB)
socket.subscribe('')
socket.connect(strTCP)
poller = zmq.Poller()
poller.register(socket, zmq.POLLIN)
sockets.append(socket)
pollers.append(poller)
我有不同的计算机发布到主计算机。我有他们的 IP 地址列表。当列表中只有一个 IP 时,下面的代码可以正常工作,但是当有多个 IP 时,它就不起作用了。尝试“尝试,除了”时似乎在尝试连接到 ipList 中的第二个索引时失败。
PortNum = 6666
sockets = [len( ipList )]
pollers = [len( ipList )]
context = zmq.Context()
for nIdx in range( 0, len( ipList ) ):
ipAddr = ipList[nIdx]
sockets[nIdx] = context.socket( zmq.SUB )
sockets[nIdx].subscribe( '' )
strTCP = 'tcp://{0}:{1}'.format( ipAddr, usePortNum )
sockets[nIdx].connect( strTCP )
pollers[nIdx] = zmq.Poller()
pollers[nIdx].register(sockets[nIdx], zmq.POLLIN)
sockets = [len( ipList )]
这不会像您认为的那样创建长度为 len(ipList)
的列表。它创建一个包含单个条目的列表。因此,第二次通过循环,当您尝试访问列表中的下一项时,您会得到一个 IndexError
。
尝试这样的事情:
PortNum = 6666
sockets = []
pollers = []
context = zmq.Context()
for ipAddr in ipList:
strTCP = f'tcp://{ipAddr}:{usePortNum}'
socket = context.socket(zmq.SUB)
socket.subscribe('')
socket.connect(strTCP)
poller = zmq.Poller()
poller.register(socket, zmq.POLLIN)
sockets.append(socket)
pollers.append(poller)