如何让客户端每次启动服务器时都接收数据?

时间:2021-06-28 09:42:53

标签: python-3.x zeromq pyzmq

我已经创建了一个 zmq.SUB 客户端,以便在可以获取数据时从服务器接收数据。

client.py


import zmq
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.subscribe("")
socket.connect("tcp://localhost:9000")

while True:
    print(socket.recv_string())

问题是我的服务器只需要发送一次数据然后需要快速关闭。然后重新打开它,发送数据然后永远重复这些步骤。但是客户端无法从服务器获取任何数据,可以有人在我的特殊情况下有一些解决方案吗?

server.py


import zmq
context = zmq.Context.instance()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:9000")
socket.send_string(f"Hello")

操作

python client.py  
python server.py  
python server.py  
python server.py  

1 个答案:

答案 0 :(得分:0)

我稍微更改了代码,现在可以使用了,我认为它没有 工作,因为您立即发送消息。

Server.py

import zmq
import time
context = zmq.Context.instance()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:9000")

input("press enter to send message...")
socket.send_string(f"Hello")

client.py

import zmq
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect("tcp://127.0.0.1:9000")
socket.subscribe("")

while True:
    print(socket.recv_string())

现在就运行

python client.py

然后

python server.py

然后按回车键(不要立即等待至少四分之一秒!)

相关问题